Feb 12, 2007

[Other] A quick comparison v0.21b vs v0.22b

I finally finished with the new move and transposition table representation along with a number of other optimizations. I will put the new version up for download tonight.

I am still not sure what the optimal size for the transposition tables is, and it can not be changed by the interface yet. I will leave this for a later version though.

A quick comparison

I made a simple comparison to see how much speed Mediocre has gained from these changes. By simply letting the both versions calculate the starting position for 9 plies we get a decent idea of the differences, note however that the new Mediocre can use a larger transposition table and will probably be even faster further into the game.

Mediocre v0.21b
Ply Eval   Time   Nodes Line
1 20 109 21 Nc3
2 0 140 107 Nc3 Nc6
3 20 156 223 Nc3 Nc6 Nf3
4 0 203 728 Nc3 Nc6 Nf3 Nf6
5 7 281 2066 Nc3 Nc6 Nf3 Nf6 d4
6 0 625 5940 Nc3 Nc6 Nf3 Nf6 d4 d5
7 15 1922 25719 Nc3 Nc6 Nf3 Nf6 d4 d5 Be3
8 0 7015 81963 Nc3 Nc6 Nf3 Nf6 d4 d5 Be3 Be6
9 19 136609 1085895 e4 Nf6 e5 Nd5 Nf3 Nc6 Bc4 Nb6 Na3

Total time: 2:16.609
Mediocre v0.22b
Ply Eval Time   Nodes Line
1 20 47 21 Nc3
2 0 79 107 Nc3 Nc6
3 20 79 223 Nc3 Nc6 Nf3
4 0 94 728 Nc3 Nc6 Nf3 Nf6
5 7 125 2066 Nc3 Nc6 Nf3 Nf6 d4
6 0 172 5940 Nc3 Nc6 Nf3 Nf6 d4 d5
7 15 329 25406 Nc3 Nc6 Nf3 Nf6 d4 d5 Be3
8 0 938 79321 Nc3 Nc6 Nf3 Nf6 d4 d5 Be3 Be6
9 19 19235 1176165 e4 Nf6 e5 Nd5 Nf3 Nc6 Bc4 Nb6 Na3
Total time: 19.250
The new version is almost 2 minutes faster to 9 ply. A remarkable difference really.

Notice how the number of nodes differ slightly, this evens out over time though, and the changes I made to hash and killer move values makes the new version visit less moves later in the game.

The expected lines are exactly the same though, so we know I did not mess up anything when implementing this.

The important thing is the nodes per second here though. Clearly Mediocre has improved tremendously in that area. :)

Looking ahead

I think it is time we start working on the evaluation now. What is the use to search deep if you do not know what you are searching for? :)

Also a few extensions, like check and singular response extension, would be nice.

Further on I will start working with the repetition detection again, we should be able to gain some speed there as well from cutting off drawn repetition lines.

No comments: