From c9fe373d91c954105f5f9c2dd42f46e45933f69c Mon Sep 17 00:00:00 2001 From: c9s Date: Thu, 22 May 2014 21:01:25 +0800 Subject: [PATCH] benchmark function improvements --- tests/bench.c | 5 +++++ tests/bench.h | 8 +++----- tests/check_tree.c | 5 ++--- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/tests/bench.c b/tests/bench.c index 84344f0a..cebd3e5c 100644 --- a/tests/bench.c +++ b/tests/bench.c @@ -59,6 +59,11 @@ void bench_print_summary(bench *b) { printf("%.2f i/sec\n", bench_iteration_speed(b) ); } +/** + * Combine multiple benchmark result into one measure entry. + * + * bench_append_csv("benchmark.csv", 3, &b1, &b2) + */ void bench_append_csv(char *filename, int countOfB, ...) { FILE *fp = fopen(filename, "a+"); if(!fp) { diff --git a/tests/bench.h b/tests/bench.h index dbae90bf..85ba0bb8 100644 --- a/tests/bench.h +++ b/tests/bench.h @@ -14,7 +14,6 @@ #define SEC_IN_MIN 60 #define NUL '\0' - typedef struct { long N; // N for each run long R; // runs @@ -41,6 +40,7 @@ void bench_append_csv(char *filename, int countOfB, ...); #define BENCHMARK(B) \ bench B; B.N = 5000000; B.R = 3; \ + printf("Benchmarking " #B "...\n"); \ bench_start(&B); \ for (int _r = 0; _r < B.R ; _r++ ) { \ for (int _i = 0; _i < B.N ; _i++ ) { @@ -52,10 +52,8 @@ void bench_append_csv(char *filename, int countOfB, ...); #define BENCHMARK_SUMMARY(B) bench_print_summary(&B); -#define BENCHMARK_RECORD_CSV(B,filename) \ - FILE *fp = fopen(filename, "a+"); \ - fprintf(fp, "%ld,%.2f\n", unixtime(), (B.N * B.R) / (B.end - B.start)); \ - fclose(fp); +#define BENCHMARK_RECORD_CSV(filename, countOfB, ...) \ + bench_append_csv(filename, countOfB, __VA_ARGS__) #endif /* !BENCH_H */ diff --git a/tests/check_tree.c b/tests/check_tree.c index 88ebba18..9160e1d5 100644 --- a/tests/check_tree.c +++ b/tests/check_tree.c @@ -717,13 +717,12 @@ r3_tree_insert_path(n, "/garply/grault/corge", NULL); ck_assert_int_eq( *((int*) m->data), 999 ); - printf("Benchmarking...\n"); BENCHMARK(string_dispatch) r3_tree_matchl(n , "/qux/bar/corge", strlen("/qux/bar/corge"), NULL); END_BENCHMARK(string_dispatch) - BENCHMARK_SUMMARY(string_dispatch); - BENCHMARK_RECORD_CSV(string_dispatch, "bench_str.csv") + + BENCHMARK_RECORD_CSV("bench_str.csv", 1, &string_dispatch); } END_TEST