Author: Dan Newman
Date: 12:13:02 06/06/01
Go up one level in this thread
On June 06, 2001 at 12:00:06, Robert Hyatt wrote:
>On June 06, 2001 at 09:38:47, Vincent Diepeveen wrote:
>
>>On June 06, 2001 at 09:33:00, martin fierz wrote:
>>
>>>On June 06, 2001 at 09:31:32, martin fierz wrote:
>>>
>>>>[snip]
>>>>>
>>>>>In this piece of crap code i see everywhere:
>>>>>
>>>>> if (side == WHITE)
>>>>> tsq = B->WhiteKnights;
>>>>> else
>>>>> tsq = B->BlackKnights;
>>>>>
>>>>>Note you can eliminate these branches, which speeds code up bigtime.
>>>>[snip]
>>>>
>>>>so, who can enlighten a dummy like me? how exactly can i eliminate
>>>>branches like this? i admit that my checkers program has some of these
>>>>too... although i mostly do it like this
>>>>
>>>>if(color==WHITE)
>>>argh... i hit tab return instead of return, ok, again:
>>
>>The logical thing to do which saves a dead slow branch is:
>>
>> tsq = globaltable[side];
>>
>
>
>:)
>
>That replaces a "dead slow branch" with a "dead slower memory reference".
>
>some replacement.
>
Yes, I'd rather do a little calculation than reference memory. Still,
wouldn't
tsq = B->Knights[side];
tend to be a little faster than
if( side == WHITE )
tsq = B->WhiteKnights;
else
tsq = B->BlackKnights;
since in both cases you have to get at "side" and one of those two bitmaps?
Of course you might rather have all the bitmaps of a given color bunched
together to help with the caching...
-Dan.
>
>
>
>>Basically you can get rid of any easy branch you want to
>>even without using Pentiumpro instructions.
>>
>>Just create some tables.
>
>Tables == bandwidth. The PC has none.
>
>
>
>>
>>>if(color==WHITE)
>>> do lots of stuff
>>>else
>>> do lots of other stuff.
>>>
>>>is this still so stupid?
>>>
>>>cheers
>>> martin
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.