[v1.1] benchtests: Add new directive for benchmark initialization hook
Commit Message
Sorry, I forgot to update this old patch before sending it. Here's
the correct version.
Siddhesh
* benchtests/README: Document 'init' directive.
* benchtests/bench-skeleton.c (main) [BENCH_INIT]: Call
BENCH_INIT.
* scripts/bench.py (gen_source): Define BENCH_INIT macro.
(parse_file): Recognize 'init' directive.
From 469da08fd32c5a38c0f8dcc985e0c2342bd729e3 Mon Sep 17 00:00:00 2001
From: Siddhesh Poyarekar <siddhesh@redhat.com>
Date: Sat, 22 Feb 2014 10:09:27 +0530
Subject: [PATCH] benchtests: Add new directive for benchmark initialization
hook
Add a new 'init' directive that specifies the name of the function to
call to do function-specific initialization. This is useful for
benchmarks that need to do a one-time initialization before the
functions are executed.
---
benchtests/README | 1 +
benchtests/bench-skeleton.c | 3 +++
benchtests/scripts/bench.py | 7 ++++++-
3 files changed, 10 insertions(+), 1 deletion(-)
Comments
Ping!
On Mon, May 19, 2014 at 04:47:15PM +0530, Siddhesh Poyarekar wrote:
> Sorry, I forgot to update this old patch before sending it. Here's
> the correct version.
>
> Siddhesh
>
> * benchtests/README: Document 'init' directive.
> * benchtests/bench-skeleton.c (main) [BENCH_INIT]: Call
> BENCH_INIT.
> * scripts/bench.py (gen_source): Define BENCH_INIT macro.
> (parse_file): Recognize 'init' directive.
>
> From 469da08fd32c5a38c0f8dcc985e0c2342bd729e3 Mon Sep 17 00:00:00 2001
> From: Siddhesh Poyarekar <siddhesh@redhat.com>
> Date: Sat, 22 Feb 2014 10:09:27 +0530
> Subject: [PATCH] benchtests: Add new directive for benchmark initialization
> hook
>
> Add a new 'init' directive that specifies the name of the function to
> call to do function-specific initialization. This is useful for
> benchmarks that need to do a one-time initialization before the
> functions are executed.
> ---
> benchtests/README | 1 +
> benchtests/bench-skeleton.c | 3 +++
> benchtests/scripts/bench.py | 7 ++++++-
> 3 files changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/benchtests/README b/benchtests/README
> index 52a3cc2..999d268 100644
> --- a/benchtests/README
> +++ b/benchtests/README
> @@ -62,6 +62,7 @@ one to add `foo' to the bench tests:
> and functions (specifically, this includes using "#include "source").
> See pthread_once-inputs and pthreads_once-source.c for an example of how
> to use this to benchmark a function that needs state across several calls.
> + - init: Name of an initializer function to call to initialize the benchtest.
> - name: See following section for instructions on how to use this directive.
>
> Lines beginning with a single hash '#' are treated as comments. See
> diff --git a/benchtests/bench-skeleton.c b/benchtests/bench-skeleton.c
> index 29d6bda..68a91dc 100644
> --- a/benchtests/bench-skeleton.c
> +++ b/benchtests/bench-skeleton.c
> @@ -62,6 +62,9 @@ main (int argc, char **argv)
>
> unsigned long iters, res;
>
> +#ifdef BENCH_INIT
> + BENCH_INIT ();
> +#endif
> TIMING_INIT (res);
>
> iters = 1000 * res;
> diff --git a/benchtests/scripts/bench.py b/benchtests/scripts/bench.py
> index 492c764..eb5a141 100755
> --- a/benchtests/scripts/bench.py
> +++ b/benchtests/scripts/bench.py
> @@ -128,6 +128,10 @@ def gen_source(func, directives, all_vals):
> else:
> getret = ''
>
> + # Test initialization.
> + if directives['init']:
> + print('#define BENCH_INIT %s' % directives['init'])
> +
> print(EPILOGUE % {'getret': getret, 'func': func})
>
>
> @@ -232,7 +236,8 @@ def parse_file(func):
> 'args': [],
> 'includes': [],
> 'include-sources': [],
> - 'ret': ''
> + 'ret': '',
> + 'init': ''
> }
>
> try:
> --
> 1.9.0
>
Looks fine to me, thanks,
Andreas
@@ -62,6 +62,7 @@ one to add `foo' to the bench tests:
and functions (specifically, this includes using "#include "source").
See pthread_once-inputs and pthreads_once-source.c for an example of how
to use this to benchmark a function that needs state across several calls.
+ - init: Name of an initializer function to call to initialize the benchtest.
- name: See following section for instructions on how to use this directive.
Lines beginning with a single hash '#' are treated as comments. See
@@ -62,6 +62,9 @@ main (int argc, char **argv)
unsigned long iters, res;
+#ifdef BENCH_INIT
+ BENCH_INIT ();
+#endif
TIMING_INIT (res);
iters = 1000 * res;
@@ -128,6 +128,10 @@ def gen_source(func, directives, all_vals):
else:
getret = ''
+ # Test initialization.
+ if directives['init']:
+ print('#define BENCH_INIT %s' % directives['init'])
+
print(EPILOGUE % {'getret': getret, 'func': func})
@@ -232,7 +236,8 @@ def parse_file(func):
'args': [],
'includes': [],
'include-sources': [],
- 'ret': ''
+ 'ret': '',
+ 'init': ''
}
try: