benchmark: make measuring small snippets of code less verbose/easier to use
parent
857cbfb0d2
commit
9d61f4fad1
|
@ -23,12 +23,32 @@ for {
|
||||||
bmark.stop() // call when you want to finalize the benchmark
|
bmark.stop() // call when you want to finalize the benchmark
|
||||||
println( bmark.total_message('remarks about 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 benchmark
|
||||||
|
b := benchmark.start()
|
||||||
|
|
||||||
|
// your code 1 ...
|
||||||
|
b.measure('code_1')
|
||||||
|
|
||||||
|
// your code 2 ...
|
||||||
|
b.measure('code_2')
|
||||||
|
```
|
||||||
|
... which will produce on stdout something like this:
|
||||||
|
SPENT 17 ms in code_1
|
||||||
|
SPENT 462 ms in code_2
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
const (
|
const (
|
||||||
BOK = term.ok_message('OK')
|
BOK = term.ok_message('OK')
|
||||||
BFAIL = term.fail_message('FAIL')
|
BFAIL = term.fail_message('FAIL')
|
||||||
|
BSPENT = term.ok_message('SPENT')
|
||||||
)
|
)
|
||||||
|
|
||||||
pub struct Benchmark {
|
pub struct Benchmark {
|
||||||
|
@ -95,6 +115,20 @@ pub fn (b mut Benchmark) neither_fail_nor_ok() {
|
||||||
b.step_end_time = benchmark.now()
|
b.step_end_time = benchmark.now()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn start() Benchmark {
|
||||||
|
mut b := new_benchmark()
|
||||||
|
b.step()
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn (b mut Benchmark) measure(label string) i64 {
|
||||||
|
b.ok()
|
||||||
|
res := b.step_end_time - b.step_start_time
|
||||||
|
println(b.step_message_with_label(BSPENT, 'in $label'))
|
||||||
|
b.step()
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
pub fn (b &Benchmark) step_message_with_label(label string, msg string) string {
|
pub fn (b &Benchmark) step_message_with_label(label string, msg string) string {
|
||||||
mut timed_line := ''
|
mut timed_line := ''
|
||||||
if b.nexpected_steps > 0 {
|
if b.nexpected_steps > 0 {
|
||||||
|
|
Loading…
Reference in New Issue