Messages in this thread Patch in this message | | | From | Kuan-Wei Chiu <> | Subject | [PATCH v2 1/2] lib/find_bit_benchmark: Add benchmark test for fns() | Date | Tue, 30 Apr 2024 13:49:11 +0800 |
| |
Introduce a benchmark test for the fns(). It measures the total time taken by fns() to process 1,000,000 test data generated using get_random_long() for each n in the range [0, BITS_PER_LONG].
Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com> --- lib/find_bit_benchmark.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)
diff --git a/lib/find_bit_benchmark.c b/lib/find_bit_benchmark.c index d3fb09e6eff1..8712eacf3bbd 100644 --- a/lib/find_bit_benchmark.c +++ b/lib/find_bit_benchmark.c @@ -146,6 +146,28 @@ static int __init test_find_next_and_bit(const void *bitmap, return 0; } +static int __init test_fns(void) +{ + const unsigned long round = 1000000; + s64 time[BITS_PER_LONG + 1]; + unsigned int i, n; + volatile unsigned long x, y; + + for (n = 0; n <= BITS_PER_LONG; n++) { + time[n] = ktime_get(); + for (i = 0; i < round; i++) { + x = get_random_long(); + y = fns(x, n); + } + time[n] = ktime_get() - time[n]; + } + + for (n = 0; n <= BITS_PER_LONG; n++) + pr_err("fns: n = %2u: %12lld ns\n", n, time[n]); + + return 0; +} + static int __init find_bit_test(void) { unsigned long nbits = BITMAP_LEN / SPARSE; @@ -186,6 +208,9 @@ static int __init find_bit_test(void) test_find_first_and_bit(bitmap, bitmap2, BITMAP_LEN); test_find_next_and_bit(bitmap, bitmap2, BITMAP_LEN); + pr_err("\nStart testing for fns()\n"); + test_fns(); + /* * Everything is OK. Return error just to let user run benchmark * again without annoying rmmod. -- 2.34.1
| |