diff options
| author | Yury Norov <yury.norov@gmail.com> | 2021-08-15 00:17:01 +0300 | 
|---|---|---|
| committer | Yury Norov <yury.norov@gmail.com> | 2022-01-15 19:47:31 +0300 | 
| commit | f68edc9297bf3f7c94abb54b9b0b053607f7587b (patch) | |
| tree | f4e963ec2db91a06210c3b7886a233c16e411323 /include/linux/compiler_attributes.h | |
| parent | c126a53c276048125b4a950072bab37ad0fea120 (diff) | |
| download | linux-f68edc9297bf3f7c94abb54b9b0b053607f7587b.tar.xz | |
lib: add find_first_and_bit()
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: Yury Norov <yury.norov@gmail.com>
Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Tested-by: Alexey Klimov <aklimov@redhat.com>
Diffstat (limited to 'include/linux/compiler_attributes.h')
0 files changed, 0 insertions, 0 deletions
