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.
Ply Eval Time Nodes LineMediocre v0.22b
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
Ply Eval Time Nodes LineThe new version is almost 2 minutes faster to 9 ply. A remarkable difference really.
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
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. :)
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.