mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
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.
This commit is contained in:
parent
75f11331f9
commit
15eaf6ffe3
@ -1,3 +1,11 @@
|
||||
2014-05-26 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
* 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.
|
||||
|
||||
2014-05-26 Kyle McMartin <kyle@redhat.com>
|
||||
|
||||
[BZ #16796]
|
||||
|
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user