source: mainline/uspace/app/hbench/doc/doxygroups.h@ ebb0835

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.