Hi all!
Like the subject line says, the freecell-solver MS 32,000 benchmark went below
the 7 second threshold, and I got this ~6.789s result:
Started at 1495991555.891971
Started at 1495991555.891971
Unsolved Board No. 11982 at 1495991558.841448
Started at 1495991555.891971
Started at 1495991555.891971
Started at 1495991555.891971
Reached Board No. 4000 at 1495991556.797603 (total_num_iters=1413271)
Reached Board No. 8000 at 1495991557.667971 (total_num_iters=2787181)
Reached Board No. 12000 at 1495991558.507312 (total_num_iters=4123941)
Reached Board No. 16000 at 1495991559.463249 (total_num_iters=5599888)
Reached Board No. 20000 at 1495991560.337991 (total_num_iters=6984235)
Reached Board No. 24000 at 1495991561.165857 (total_num_iters=8302682)
Reached Board No. 28000 at 1495991561.999263 (total_num_iters=9636225)
Finished at 1495991562.870831 (total_num_iters=11017439)
Here is how it was done:
1. The cmd-line compiler - one day I went on a walk and thought of an idea to
generate a C file that will do the equivalent configuration of a complex
command line preset such as "-l obf". After I returned home I implemented it -
see
https://github.com/shlomif/fc-solve/commit/0192b94c622fcfbf865ab2ee1e3325cd2e346894
on the git master branch. I benchmarked it and found it somewhat slower. That
was not the end of the story however.
2. My work on the cmd line compiler showed me that the
instance-wide max_num_states feature was often under-utilised. As a result, in
this commit, I added a compile-time option to remove it :
https://github.com/shlomif/fc-solve/commit/360f96ea9da1780de72d03a03eea621d471f24ce
(there were some previous refactoring commits as prereqs for it).
Benchmarking it showed that it too was slower, but interestingly enough,
enabling both it and the compiled cmd-line version was faster than either
standalone change (but still not as fast as the unaltered version).
3. Then I decided to play again with
https://en.wikipedia.org/wiki/Profile-guided_optimization and some versions of
GCC, and gcc-4.9.2 yielded the best results with PGO enabled (I had to fix the
PGO build too because it broke).
4. After I decided to try PGO with both change #1 and change #2 enabled, I
found out that, using gcc-4.9.2, it was the most performant and often yielded
the sub-7s results.
=============
Now I'd like to try adding a compile-time option to disable
"-ni"/"--next-instance" and related functionality, because it too is
under-used with '-l obf'. Perhaps it will make matters a little faster too.
Regards,
Shlomi Fish
--
-----------------------------------------------------------------
Shlomi Fish http://www.shlomifish.org/
Beginners Site for the Vim text editor - http://vim.begin-site.org/
If you wish to live wisely, ignore sayings — including this one.
— Unknown Source (via fortune-mod).
Please reply to list if it's a mailing list post - http://shlom.in/reply .
Received on Sun May 28 2017 - 21:41:03 IDT