The patch titled Subject: lib/test_bitops: add benchmark test for fns() has been added to the -mm mm-nonmm-unstable branch. Its filename is lib-test_bitops-add-benchmark-test-for-fns.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/lib-test_bitops-add-benchmark-test-for-fns.patch This patch will later appear in the mm-nonmm-unstable branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via the mm-everything branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there every 2-3 working days ------------------------------------------------------ From: Kuan-Wei Chiu <visitorckw@xxxxxxxxx> Subject: lib/test_bitops: add benchmark test for fns() Date: Thu, 2 May 2024 17:24:42 +0800 Patch series "bitops: Optimize fns() for improved performance", v5. This patch series optimizes the fns() function by avoiding repeated calls to __ffs(). Additionally, tests for fns() have been added in lib/test_bitops.c. This patch (of 2): Introduce a benchmark test for the fns(). It measures the total time taken by fns() to process 10,000 test data generated using get_random_bytes() for each n in the range [0, BITS_PER_LONG). example: test_bitops: fns: 7637268 ns Link: https://lkml.kernel.org/r/20240502092443.6845-1-visitorckw@xxxxxxxxx Link: https://lkml.kernel.org/r/20240502092443.6845-2-visitorckw@xxxxxxxxx Signed-off-by: Kuan-Wei Chiu <visitorckw@xxxxxxxxx> Suggested-by: Yury Norov <yury.norov@xxxxxxxxx> Cc: Ching-Chun (Jim) Huang <jserv@xxxxxxxxxxxxxxxx> Cc: Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- lib/test_bitops.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) --- a/lib/test_bitops.c~lib-test_bitops-add-benchmark-test-for-fns +++ a/lib/test_bitops.c @@ -50,6 +50,26 @@ static unsigned long order_comb_long[][2 }; #endif +static int __init test_fns(void) +{ + static unsigned long buf[10000] __initdata; + static volatile __used unsigned long tmp __initdata; + unsigned int i, n; + ktime_t time; + + get_random_bytes(buf, sizeof(buf)); + time = ktime_get(); + + for (n = 0; n < BITS_PER_LONG; n++) + for (i = 0; i < 10000; i++) + tmp = fns(buf[i], n); + + time = ktime_get() - time; + pr_err("fns: %18llu ns\n", time); + + return 0; +} + static int __init test_bitops_startup(void) { int i, bit_set; @@ -94,6 +114,8 @@ static int __init test_bitops_startup(vo if (bit_set != BITOPS_LAST) pr_err("ERROR: FOUND SET BIT %d\n", bit_set); + test_fns(); + pr_info("Completed bitops test\n"); return 0; _ Patches currently in -mm which might be from visitorckw@xxxxxxxxx are lib-test_bitops-add-benchmark-test-for-fns.patch bitops-optimize-fns-for-improved-performance.patch