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
 | 
			
		||||
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 (
 | 
			
		||||
	BOK = term.ok_message('OK')
 | 
			
		||||
	BFAIL = term.fail_message('FAIL')
 | 
			
		||||
	BSPENT = term.ok_message('SPENT')
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
pub struct Benchmark {
 | 
			
		||||
| 
						 | 
				
			
			@ -95,6 +115,20 @@ pub fn (b mut Benchmark) neither_fail_nor_ok() {
 | 
			
		|||
	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 {
 | 
			
		||||
	mut timed_line := ''
 | 
			
		||||
	if b.nexpected_steps > 0 {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue