Ok,   I found the bug and I have basically ported just enough of the
program over to D to run my performance benchmark - 1000,000 random
games from opening position.

Since D is a cleaned up version of C++,  it's easy to port and I'm
trying to write it in pretty much exactly the same style - cutting and
pasting a lot of the code and then fixing it up.

The only difference, and this may make the test slightly unfair, is that
instead of putting the position in a C struct and passing a pointer to
various C functions,  I just put everything in a class to make it a bit
cleaner.

I backed out several recent optimizations from the C code for the sake
of apples/apples comparison because the code is cleaner without them.
Some of the optimizations I kept because they were simple or more
algorithmic  and I use them in both versions.   But I think the code
bases are pretty much the same.  

I'm running D without ANY compiler options and it's 3.1 times slower.
I'm keeping my fingers crossed - I'm not sure if this is the same as gcc
with speed optimization off or not but I know that D does more checking
such as for array overflows, etc.   So this is kind of a super debugging
mode.   (The array checking worked,  it caught 2 bugs in the code that
would have probably given me big headaches - one of them a typo.)

So far my experience with D is positive,  it's pretty much C with all
the features I really want without all the ugly warts.    


    D ->   no options           ->   4378.00  games per second.
    C ->  current version       ->  16398.82  games per second
    C ->  unoptimized caps      ->  14330.75   etc.
    C ->  unoptimized libs      ->  13745.70

I'll see if I can figure out what options turn on all the speed now ...

- Don




_______________________________________________
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Reply via email to