From: "Anders Kierulf" <anders@xxxxxxxxxxxxxxxxx>
> Anyway, I'm curious about what other knowledge is incrementally updated
> by my fellow Go programmers, and how, if you don't mind.
SmartGo currently keeps the following information up-to-date:
- Number of black and white stones on the board.
- Zobrist hash code (64 bits).
- Number of empty neighbors for each point.
- The stones in each block (in a circular linked list).
- The anchor (smallest stone in a block) of each stone.
- The liberties and liberty count of each block (in an array).
- (Optional) Bitboards for all black, white, and empty points.
> Just for some sporty fun, my Go program on PIII-500 can execute about
> one million random moves in under 5 seconds:
>
> Board::TimingTests()
> ---> Playing Random Game
> ***> 1000000 Turns
> ***> 4.625 seconds.
> ***> 216216 turns per second.
Can you elaborate on what you mean by playing random games? To make it a
more realistic test, it should probably include taking back the moves
played, and also check some random liberty counts and iterate through
liberties between moves.
Anders Kierulf
www.smartgo.com
Are these numbers based on taking back moves or just making them?
I would like to emphasize that my test does both. Even though taking
back moves is free for me, I presumably pay for this up front with a
slower move maker. (Actually, is my move maker really slower? I'm
not convinced of this because every program has to provide an
equivalent mechanism and extra logic for taking back moves.)
I get 300,000 nodes per second, on a pentium II laptop running at 400
MGH which includes evaluation, which is fast and simple, but by no
means free.
Phil's program is doing some work mine does not do, because he is
keeping some bit boards updated too. So it's hard to construct an
apples to apples test unless he can turn that stuff off. I have yet
to see a good reason to turn my program into a hackery of global
variables that are updated in place, but I would do this if it meant
extra speed. I don't know of a fair way to test this without actually
going through this excercise, but I need a lot of motivation, because
I think my program is at least pretty fast, if nothing else.
Don