I added a script to time FCS. See time-fcs.pl here:
http://svn.berlios.de/viewcvs/fc-solve/trunk/fc-solve/source/scripts/
You run it with the freecell-solver-range-parallel-solver dump in the command
line argument (or pipe into STDIN), and it will calculate the time difference
in seconds. This script helped me a lot in benchmarking FCS.
I added the FCS_FREECELL_ONLY compile-time flag that short-circuits some
settings to Freecell-only. Still not all.
I fixed the ability to use libredblack for states and stacks storage.
Previously it was broken due to the key/value split.
FCS_STATE_STORAGE and FCS_STACK_STORAGE are now customisable via CMake.
Furthermore, there's a ./configure script in:
http://svn.berlios.de/viewcvs/fc-solve/trunk/fc-solve/source/
to build FCS using some common configurations. It's intended for developers
only and is not a substitute cmake / cmake-gui / ccmake .
Added FCS_STATE_STORAGE_JUDY and FCS_STACK_STORAGE_JUDY that uses
http://judy.sourceforge.net/ . Here are the benchmarks of the internal-hash,
libredblack and libJudy: (all of them while using the same technology for both
column storage and positions/states storage)
Internal hash: Finished in 224.068351984024s.
libredblack: Finished in 267.741814136505s.
libJudy: Finished in 254.165349006653s.
So Judy was better than libredblack, but not as good as our internal hash.
The -Wall flag was added to gcc in CMake by default. Now I have less use for
Makefile.gnu.
The handling of the FCS_STACK_STORAGE was made more robust, as it now croaks
if an appropriate value is not specified.
I added a "boards" target to the makefile to generate some boards I'm using to
using: 24.board and 1941.board.
The trunk got temporarily broken at one point, at least when using the
internal hash.
Updated the TODO file in several commits.
The --version flag was added to the USAGE.
------------------------
Now, I recently split fcs_state_with_locations_t into two: fcs_state_t (= key)
and fcs_state_extra_info_t (= val). And I kept passing them both to routines.
Now: fcs_extra_info_t had a pointer to parent_key and parent_val. Recently, to
reconcile the problems with one of the trees implementations, I added a ->key
element to fcs_extra_info_t to point back to the fcs_state_t key. This made
parent_key useless, because I could always use parent_val->key. So I removed
it and so ended up without any waste.
Then I figured out that I could simply pass around the val and infer the key
from it using ->key. So in a series of commits, I removed most places where
ptr_state_key was passed along ptr_state_val.
----------
Statistics: since r1250:
* 55 commits in 3 days.
* 943 added lines.
* 971 deleted lines.
* $ wc svn.diff
4028 12966 136697 svn.diff
Regards,
Shlomi Fish
--
-----------------------------------------------------------------
Shlomi Fish http://www.shlomifish.org/
The Case for File Swapping - http://xrl.us/bjn7i
God gave us two eyes and ten fingers so we will type five times as much as we
read.
Received on Thu Mar 19 2009 - 01:57:04 IST