Author: Robert Hyatt
Date: 12:43:27 01/17/04
Go up one level in this thread
On January 17, 2004 at 13:50:13, Russell Reagan wrote: >On January 17, 2004 at 12:24:59, Robert Hyatt wrote: > >>There is probably some break-even point in how many times you use one or the >>other, before the other is preferable. I wouldn't try to predict without >>running it however. > >One thing I do sometimes (based on my blind faith in the compiler) is store >intermediate values in a const variable (usually in a function). My hope is that >the compiler will be able to make the best choice about whether or not to go >ahead and store the intermediate value, or whether to substitute the small >computation in the one or two places where it is used in the function. Is this a >good idea, or is there any reason why I should avoid this? I don't see how this can be the same thing we were talking about. To use an "immediate value" the value must be fixed at _compile time_. Because only then can the compiler fill in an immediate operand directly into the instruction, rather than doing a load from memory.. All I can see your "const" declaration doing below is telling the compiler "If I modify from or attacks in this function, then produce an error as it has been declared to be a constant and is not modifiable." Am I missing what you asked??? > >An example of something I might do: > >// In movegen... >Bitboard rooksLeft = friendlyRooks; >while (rooksLeft) >{ > const int from = FirstOne(rooksLeft); > const Bitboard attacks = RookAttacks(from); // <-- Store intermediate value > > // Generate captures > Bitboard moves = attacks & enemyPieces; // <--- Use attacks once > while (moves) > { > // Generate the captures... > } > > // Generate noncaptures > moves = attacks & emptySquares; // <--- Use 'attacks' again > while (moves) > { > // Generate the noncaptures... > } >}
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.