On Thursday 09 April 2009 19:26:54 Shlomi Fish wrote:
> 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.
>
I spent the rest of the evening on Thursday doing exactly that, and now the
="profile" CMAKE_BUILD_TYPE is functional and working properly. I used it to
run gprof on the code once again, and see where it would be worth my time to
optimise. Anyway, it's on the trunk.
Since then, I've also been working on a top-secret project, also related to
solving puzzles, but I'll have to kill you before I tell you what it is. :-).
BTW, I've recently compiled my fluttering flag (see
http://www.shlomifish.org/open-source/bits.html ) program using
gcc-4.3.2-5mnb2 here on Cooker, and it seemed much slower than an old binary I
prepared for it. I've meaning to check out older gcc releases to see if they
compile slower, and now it seems that I'll have to check if they produce
slower code as well.
Regards,
Shlomi Fish
--
-----------------------------------------------------------------
Shlomi Fish http://www.shlomifish.org/
Stop Using MSIE - http://www.shlomifish.org/no-ie/
God gave us two eyes and ten fingers so we will type five times as much as we
read.
Received on Tue Apr 14 2009 - 01:57:31 IDT