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-that-is-set


Reply via email to