I'm working on a new chess program which will feature a transposition table. It is my first time I have programmed transpositions tables and I have been unsure of what sort of performance I should expect from using them. I'm only at the stage of having written the move generation part of the chess engine so all my testing has been perft tests. The good news is my perft results are accurate with the use of transposition tables and I also get a speed boost of around 3-4 times with transposition tables compared with not using them. During my testing I found the transposition table did not fill as fast as I thought it would, so I'm wondering what is normal? Here are my results which shows the percentage of how full the table is...
Code: Select all
Fen=rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
Depth= 1 Nodes= 20 NPS= 272,208 Hash=238.419%e-7%
Depth= 2 Nodes= 400 NPS= 962,890 Hash=500.679%e-6%
Depth= 3 Nodes= 8,902 NPS= 1,083,147 Hash= 0.010%
Depth= 4 Nodes= 197,281 NPS= 1,304,051 Hash= 0.191%
Depth= 5 Nodes= 4,865,609 NPS= 2,101,897 Hash= 2.585%
Depth= 6 Nodes= 119,060,324 NPS= 3,697,046 Hash= 27.708%
Depth= 7 Nodes=3,195,901,860 NPS= 4,138,088 Hash= 97.599%
Note: These results are based on a transposition table of 4,194,303 slots. Each hash record contains HashKey, Nodes, Depth.
Does this look right? Or am I doing something wrong?
Thanks,
Tom.