lfn
serial
ticket/834-toolchain-update
topic/msim-upgrade
topic/simplify-dev-export
Last change
on this file since ebb0835 was ebb0835, checked in by Vojtech Horky <vojtech.horky@…>, 6 years ago |
hbench: add tiny wrapper around stopwatch_t
This prepares the harness for future extensions when more than wallclock
time would be prepared. The data would be stored inside the new
structure and the actual benchmarks would not need to be modified at all
(they really should not care which metrics are collected).
|
-
Property mode
set to
100644
|
File size:
1.5 KB
|
Line | |
---|
1 | /** @addtogroup hbench hbench
|
---|
2 | * @brief HelenOS user space benchmarks
|
---|
3 | * @ingroup apps
|
---|
4 | *
|
---|
5 | * @details
|
---|
6 | *
|
---|
7 | * To add a new benchmark, you need to implement the actual benchmarking
|
---|
8 | * code and register it.
|
---|
9 | *
|
---|
10 | * Registration is done by adding
|
---|
11 | * <code>extern benchmark_t bench_YOUR_NAME</code> reference to benchlist.h
|
---|
12 | * and by adding it to the array in benchlist.c.
|
---|
13 | *
|
---|
14 | * The actual benchmark should reside in a separate file (see malloc/malloc1.c
|
---|
15 | * for example) and has to (at least) declare one function (the actual
|
---|
16 | * benchmark) and fill-in the benchmark_t structure.
|
---|
17 | *
|
---|
18 | * Fill-in the name of the benchmark, its description and a reference to the
|
---|
19 | * benchmark function to the benchmark_t.
|
---|
20 | *
|
---|
21 | * The benchmarking function has to accept four arguments:
|
---|
22 | * @li benchmeter_t: call benchmeter_start and benchmeter_stop around the
|
---|
23 | * actual benchmarking code
|
---|
24 | * @li uint64_t: size of the workload - typically number of inner loops in
|
---|
25 | * your benchmark (used to self-calibrate benchmark size)
|
---|
26 | * @li char * and size_t giving you access to buffer for storing error message
|
---|
27 | * if the benchmark fails (return false from the function itself then)
|
---|
28 | *
|
---|
29 | * Typically, the structure of the function is following:
|
---|
30 | * @code{c}
|
---|
31 | * static bool runner(benchmeter_t *meter, uint64_t size,
|
---|
32 | * char *error, size_t error_size)
|
---|
33 | * {
|
---|
34 | * benchmeter_start(meter);
|
---|
35 | * for (uint64_t i = 0; i < size; i++) {
|
---|
36 | * // measured action
|
---|
37 | * }
|
---|
38 | * benchmeter_stop(meter);
|
---|
39 | *
|
---|
40 | * return true;
|
---|
41 | * }
|
---|
42 | * @endcode
|
---|
43 | */
|
---|
Note:
See
TracBrowser
for help on using the repository browser.