Hi,Sergei S. Markoff wrote:The main problem of perft is that different engines handles different things at MakeMove(). I have material index update/calculation here, several additional bitboards like bishops&queens, rooks&queens, raw material, psq scores. Also I'm doing move ordering score calculation during move generation.cetormenter wrote:On your computer it takes Crafty approximately 63% longer to complete its perft in both positions. Using this information and then using perft on Nirvana, it would complete perft 6 in approximately 9.5 seconds and perft 7 in 248.5 seconds on your computer. This is about on par with your "faster" perft code. However this still seems to be slow to me as Nirvana does not use any bitboards at all and instead uses a 10x12 board similar to that in found in Fruit. Using bitboards you should be able to get a nice speed up over this method.
Anyway, timings of my engine in perft looks to be comparable to others. Ok, let's suppose it's 10–15% slower than Crafty in move generation/make/unmake. Based on % of time spent in these parts of code, this slowdown can only cause few percents overall slowdown of the engine — so obviuosly it's not a main problem.
if I understood your initial post correctly you want to improve the search speed of SmarThink, which is not necessarily the same as perft speed. You may of course write a "MakePerftMove()" function that does only those things of MakeMove() that you actually need for perft so that your perft speed catches up with other engines. But obviously that won't help your standard search.
Before anyone can make suggestions that might help you, and that are not yet covered by your "already examined" list, it might be interesting to know a little bit more about the amount of "slowness" you are talking about:
What is the current average NPS of your engine for a given test scenario that you are interested in (e.g. "10-ply search over a set of 100 test positions" or whatever), and what is the average NPS of your preferred reference engine on the same computer for the same test scenario?
Sven