Message ID | 20140519111714.GL13048@spoyarek.pnq.redhat.com |
---|---|
State | New |
Headers | show |
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
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:
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(-)