11 Mar
2011
11 Mar
'11
1:51 p.m.
Do you actually have a system that doesn't have HAVE_FFS set? On my machine, int main(int argc, char **argv) { return ffs(argc); } compiles to pushl %ebp movl %esp, %ebp movl $-1, %edx bsfl 8(%ebp), %eax cmove %edx, %eax addl $1, %eax popl %ebp ret which is probably pretty fast. Large lookup tables can dirty the L1 cache and slow other things down. See also http://stackoverflow.com/questions/757059/position-of-least-significant-bit-...