Author: Sune Fischer
Date: 05:25:42 07/02/02
HI I've read that GNU chess used to have a precomputed list of moves, and it would use a lookup in that list rather than generate the moves. I don't like that idea, but if instead one created a large table to contain information needed when _making_ the moves, then that would probably yield a good speedup. For instance if using rotated bitboards, then at every move one needs to update the rotated bitboards which requires lookups in tables, masking and additional hassle to remove a piece if the move is a capture. Some of that is has got to be very cache inefficient. Now, with a precomputed makemove table, we could have these delta keys ready for one single mask, and we need but one lookup to get all the required delta-keys. Downside: the size of such a table is quite large: 64*64*6*6*2*sizeof(MoveInfo); // from,to,pawn-king,null-queen,color (enpassent and promotions are special cases) I get a total of about 14 MB, which is a little high I think. Assume this gives a boots of overall 2%, is that worth 14 MBs? Probably not, however it does actually simplify the code since fewer lines are needed in making moves. I would no doubt use it had it been 1 MB, but 14 MB that is a lot IMO. I couldn't find anything via the search engine about this (though I'm sure it has been discussed), so has anyone done something like that and are willing to share their experiences? -S.
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.