v2 / bench / crypto / ecdsa / ecdsa.v
44 lines · 38 sloc · 1.26 KB · c9a79ea026c0f3ca479a6914ff5f525810f499e2
Raw
1import time
2import crypto.ecdsa
3
4fn main() {
5 iterations := 1000
6
7 println('Benchmarking key generation...')
8 mut total_gen_time := i64(0)
9 for _ in 0 .. iterations {
10 sw := time.new_stopwatch()
11 _, _ := ecdsa.generate_key() or { panic(err) }
12 elapsed := sw.elapsed().microseconds()
13 total_gen_time += elapsed
14 }
15 avg_gen_time := total_gen_time / iterations
16 println('Average key generation time: ${avg_gen_time} µs')
17
18 pub_key, priv_key := ecdsa.generate_key() or { panic(err) }
19 message := 'Benchmark message'.bytes()
20
21 println('Benchmarking signing...')
22 mut total_sign_time := i64(0)
23 for _ in 0 .. iterations {
24 sw := time.new_stopwatch()
25 _ := priv_key.sign(message) or { panic(err) }
26 elapsed := sw.elapsed().microseconds()
27 total_sign_time += elapsed
28 }
29 avg_sign_time := total_sign_time / iterations
30 println('Average sign time: ${avg_sign_time} µs')
31
32 sig := priv_key.sign(message) or { panic(err) }
33
34 println('Benchmarking verification...')
35 mut total_verify_time := i64(0)
36 for _ in 0 .. iterations {
37 sw := time.new_stopwatch()
38 _ := pub_key.verify(message, sig) or { panic(err) }
39 elapsed := sw.elapsed().microseconds()
40 total_verify_time += elapsed
41 }
42 avg_verify_time := total_verify_time / iterations
43 println('Average verify time: ${avg_verify_time} µs')
44}
45