Author: Uri Blass
Date: 05:13:38 12/05/01
Go up one level in this thread
On December 05, 2001 at 07:24:26, Uri Blass wrote: >On December 05, 2001 at 06:46:07, Severi Salminen wrote: > >>>>#define color(target) (((info[target])>>3)&3) >>>> >>>> >>>>my data.c file includes >>>> >>>>int info[64]; >>>>int side; >>>>int direction[64][64]; >>>>int kingsquare[2]; >>>>int pin[64]; >>>> >>> >>>Perhaps the data types could be a reason for some microscopic effects. If the >>>variable "side" is for instance of type "short", the compiler has to zero-extend >>>the variable to word-size before indexing (because of the array access). >> >>But as you can see the variables are all ints. So no type conversions needed. I >>believe there is just some stupid alignment thing happening or something and >>that's why the program slows down a bit. I'd use side instead of color(sq) and >>hopefully the speedup will show up later. >> >>Severi > >Fortunately I believe that I have other ideas to save speed when I do not need >to use the variable side or the expression color(square) after the condition. > >I now check every square in the board in order to update the pin array for it >(-1 when there is no piece of the side to move or when the piece of the side to >move is not pinned and another number in other cases). > >I think to check only squares that are in queen direction with the king of the >side to move >(I can save time for example by the fact that I do not need to check if there is >something between the king and the piece that is a candidate to be pinned). > >It may be not the optimal way to update my pin array and the best way should use >the move in order to detect relevant squares but this way is needed when the >king moves and it is not so simple to detect relevant squares to change based >on the move when the move can be a capture. > >I guess that the way that I plan is going to help me to improve the time of >perft 6 in the initial position from 25 seconds on p800 to less than 20 seconds > >Uri My guess was correct Time of my programs to calculate perft from the initial position are now on p800: perft 6 18.597 seconds perft 7 450.117 seconds I believe that there is no free program that is faster but correct me if I am wrong. Uri
This page took 0.02 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.