52 lines
1.4 KiB
Markdown
52 lines
1.4 KiB
Markdown
## Description:
|
|
|
|
`benchmark` provides an easy way to measure how fast a piece of code is,
|
|
and produce a readable report about it.
|
|
|
|
## Example usage of this module:
|
|
|
|
```v
|
|
import benchmark
|
|
|
|
mut bmark := benchmark.new_benchmark()
|
|
// by default the benchmark will be verbose, i.e. it will include timing information
|
|
// if you want it to be silent, set bmark.verbose = false
|
|
for {
|
|
bmark.step() // call this when you want to advance the benchmark.
|
|
// The timing info in bmark.step_message will be measured starting from the last call to bmark.step
|
|
// ....
|
|
// bmark.fail() // call this if the step failed
|
|
// bmark.step_message(('failed')
|
|
bmark.ok() // call this when the step succeeded
|
|
println(bmark.step_message('ok'))
|
|
}
|
|
bmark.stop()
|
|
// call when you want to finalize the benchmark
|
|
println(bmark.total_message('remarks about the benchmark'))
|
|
```
|
|
|
|
benchmark.start() and b.measure() are convenience methods,
|
|
intended to be used in combination. Their goal is to make
|
|
benchmarking of small snippets of code as *short*, easy to
|
|
write, and then to read and analyze the results, as possible.
|
|
|
|
Example:
|
|
```v
|
|
import time
|
|
import benchmark
|
|
|
|
mut b := benchmark.start()
|
|
// your code section 1 ...
|
|
time.sleep(1500 * time.millisecond)
|
|
b.measure('code_1')
|
|
// your code section 2 ...
|
|
time.sleep(500 * time.millisecond)
|
|
b.measure('code_2')
|
|
```
|
|
|
|
... which will produce on stdout something like this:
|
|
```text
|
|
SPENT 1500.063 ms in code_1
|
|
SPENT 500.061 ms in code_2
|
|
```
|