Author: Daniel Shawul
Date: 01:46:27 05/05/04
Go up one level in this thread
On May 05, 2004 at 04:37:17, Omid David Tabibi wrote:
>On May 05, 2004 at 04:35:54, Omid David Tabibi wrote:
>
>>On May 05, 2004 at 04:20:18, Daniel Shawul wrote:
>>
>>>
>>>void BOARD::makemove(MOVE* move)
>>>{
>>>
>>> RemoveInfluence(Player,pic,from);
>>>
>>> //capture
>>> if(move->is_capture())
>>> {
>>> if(move->is_enpassant())
>>> {
>>>
>>> RemoveInfluence(opp,pawn,ep_sq);
>>>
>>> AddInfluence(Player,pic,to);
>>>
>>> }
>>> else
>>> {
>>> RemoveInfluence(opp,move->get_capture(),to);
>>>
>>> }
>>>
>>> }
>>>
>>> //castling
>>> if(move->is_castling())
>>> {
>>>
>>> AddInfluence(Player,king,to);
>>>
>>> RemoveInfluence(Player,rook,fromc);
>>>
>>> AddInfluence(Player,rook,toc);
>>>
>>> }
>>> //promotion
>>> else if(move->is_promotion())
>>> {
>>> AddInfluence(Player,move->get_promote(),to);
>>> }
>>> else
>>> {
>>> if(!move->is_enpassant())
>>> AddInfluence(Player,pic,to);
>>> }
>>>
>>>}
>>>
>>>
>>>
>>>void BOARD::takeback(MOVE* move)
>>>{
>>>
>>> //promotion
>>> if(move->is_promotion())
>>> {
>>> RemoveInfluence(Player,move->get_promote(),from);
>>>
>>> }
>>> //castling
>>> else if(move->is_castling())
>>> {
>>> RemoveInfluence(Player,king,from);
>>>
>>>
>>> RemoveInfluence(Player,rook,fromc);
>>>
>>> AddInfluence(Player,rook,toc);
>>>
>>>
>>> }
>>> else
>>> RemoveInfluence(Player,pic,from);
>>>
>>> AddInfluence(Player,pic,to);
>>>
>>> //captures
>>> if(move->is_capture())
>>> {
>>> if(move->is_enpassant())
>>> {
>>> sq=from + ((from>to) ? DD : UU);
>>>
>>> AddInfluence(opp,move->get_capture(),sq);
>>> }
>>> else
>>> {
>>> sq=from;
>>>
>>> AddInfluence(opp,move->get_capture(),from);
>>> }
>>> }
>>>}
>>>
>>>AddInfluence(int col ,int pic, int sq)
>>>{
>>> 1. remove attack of piece at sq
>>> 2. shorten slider attackts through sq
>>>}
>>>RemoveInfluence(int col ,int pic, int sq)
>>>{
>>> 1. Add attack of piece at sq
>>> 2. extend slider attacks through sq
>>>}
>
>For example, just optimizing these last two functions will considerably speed up
>your update, as these functions are called many times.
>
>
>>
>>
>>Incremental update will be better only if it is done efficiently. You must use a
>>good profiler (e.g., Intel VTune) to find the bottlenecks and optimize your
>>implementation. Many times the profiler will indicate hotspots that cannot be
>>easily noticed without profiling.
Optimization may give me a better result but i don't think it will yield 30%
improvement. Besides why not i optimize the faster non-incremental one ?
i doubt if optimized incremental will be better in my case.
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.