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.01 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.