• Y
    lib: add find_first_and_bit() · f68edc92
    Yury Norov 提交于
    Currently find_first_and_bit() is an alias to find_next_and_bit(). However,
    it is widely used in cpumask, so it worth to optimize it. This patch adds
    its own implementation for find_first_and_bit().
    
    On x86_64 find_bit_benchmark says:
    
    Before (#define find_first_and_bit(...) find_next_and_bit(..., 0):
    Start testing find_bit() with random-filled bitmap
    [  140.291468] find_first_and_bit:           46890919 ns,  32671 iterations
    Start testing find_bit() with sparse bitmap
    [  140.295028] find_first_and_bit:               7103 ns,      1 iterations
    
    After:
    Start testing find_bit() with random-filled bitmap
    [  162.574907] find_first_and_bit:           25045813 ns,  32846 iterations
    Start testing find_bit() with sparse bitmap
    [  162.578458] find_first_and_bit:               4900 ns,      1 iterations
    
    (Thanks to Alexey Klimov for thorough testing.)
    Signed-off-by: NYury Norov <yury.norov@gmail.com>
    Tested-by: NWolfram Sang <wsa+renesas@sang-engineering.com>
    Tested-by: NAlexey Klimov <aklimov@redhat.com>
    f68edc92
find_bit.c 3.7 KB