Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: some pseudo code

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.