Author: Vincent Diepeveen
Date: 13:18:01 09/16/01
Go up one level in this thread
On September 16, 2001 at 09:25:45, Robert Hyatt wrote:
>On September 15, 2001 at 22:31:04, Vincent Diepeveen wrote:
>
>>On September 15, 2001 at 20:34:36, Robert Hyatt wrote:
>>
>>>On September 15, 2001 at 14:30:40, Vincent Diepeveen wrote:
>>
>>[snip]
>>>FirstOne() isn't particularly slow, using the bit-scan instructions that
>>>are very fast on PII and beyond. It certainly isn't much of a cost in the
>>>profile runs I do.
>>
>>FORCEINLINE int FirstOne(BITBOARD a) {
>>
>>#if _M_IX86 <= 500 /* on plain Pentiums, use boolean.c algorithm */
>> __asm {
>> movzx edx, word ptr a+6
>> xor eax, eax
>> test edx, edx
>> jnz l1
>> mov dx, word ptr a+4
>> mov eax, 16
>> test edx, edx
>> jnz l1
>> mov dx, word ptr a+2
>> mov eax, 32
>> test edx, edx
>> jnz l1
>> mov dx, word ptr a
>> mov eax, 48
>> l1: add al, byte ptr first_ones[edx]
>> }
>>#else /* BSF and BSR are *fast* instructions on PPro/PII */
>> __asm {
>> bsr edx, dword ptr a+4
>> mov eax, 31
>> jnz l1
>> bsr edx, dword ptr a
>> mov eax, 63
>> jnz l1
>> mov edx, -1
>> l1: sub eax, edx
>> }
>>#endif /* _M_IX86 > 500 */
>>}
>>
>>Ugh ugh, how slow is 'particularly slow' slow in your dictionary?
>>
>>Best regards,
>>Vincent
>
>A few clock cycles is how slow this is. Fast enough that it doesn't register
>on the profile runs to any significant degree... If profile doesn't complein,
>then I don't worry about it.
I find this function *dead* slow.
and it's not a 'few' clocks. it's tens of clocks!
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.