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.