What's new on the Freecell Solver's trunk since the 2.22.0 release.
-------------------------------------------------------------------
I created a branch to extract most of the sfs_check_state_begin() and the
sfs_check_state_end() macros that were used in each of the tests/moves
functions into their own functions. These macros were incredibly complicated
and a mess to debug. After benchmarking a run before and after the change, I
found that the speeds of both versions were comparable.
There's some information about why using long inline functions (or C macros
for that matter) can hurt performance here:
http://lwn.net/Articles/82495/
As positive side-effects of this branch, the fcs_duplicate_state() macro now
takes pointers instead of structs, there's now a test script in the test suite
to test that the code doesn't throw any valgrind errors, and some redundant
assignments were removed. Furthermore, the size of the libfreecell-solver.so
shared library was decreased by over 10%.
The other significant change in the trunk is the addition of Makefile.llvm
that allows to compile LLVM (
http://llvm.org/ ) bitcodes from the Freecell
Solver sources. The result seems to work, but is significantly slower than the
native code compiled using gcc-4.3.2.
Next on my agenda is making sure that the "profile" compilation profile works
in CMake, doing some cleanups, and then hopefully profile the app, and do some
optimisations.
Regards,
Shlomi Fish
--
-----------------------------------------------------------------
Shlomi Fish http://www.shlomifish.org/
Understand what Open Source is - http://xrl.us/bjn82
God gave us two eyes and ten fingers so we will type five times as much as we
read.
Received on Thu Apr 09 2009 - 09:27:02 IDT