mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
bench: add a small performance comparison script bench_json_vs_json2.v
This commit is contained in:
parent
b682e9ec0b
commit
992621bd91
54
vlib/v/tests/bench/bench_json_vs_json2.v
Normal file
54
vlib/v/tests/bench/bench_json_vs_json2.v
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
import os
|
||||||
|
import json
|
||||||
|
import x.json2
|
||||||
|
import time
|
||||||
|
import benchmark
|
||||||
|
|
||||||
|
// assert json.decode[StructType[time.Time]]('{"val": "2022-03-11T13:54:25.000Z"}')!.val == fixed_time
|
||||||
|
|
||||||
|
struct Person {
|
||||||
|
name string
|
||||||
|
age int
|
||||||
|
created_at time.Time
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
max_iterations := os.getenv_opt('MAX_ITERATIONS') or { '1000' }.int()
|
||||||
|
s := '{"name":"Bilbo Baggins","age":99,"created_at":1670840340}'
|
||||||
|
mut b := benchmark.start()
|
||||||
|
|
||||||
|
for _ in 0 .. max_iterations {
|
||||||
|
p := json2.decode[Person](s)!
|
||||||
|
if p.age != 99 {
|
||||||
|
println('error: ${p}')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
b.measure('json2.decode')
|
||||||
|
|
||||||
|
for _ in 0 .. max_iterations {
|
||||||
|
p := json.decode(Person, s)!
|
||||||
|
if p.age != 99 {
|
||||||
|
println('error: ${p}')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
b.measure('json.decode')
|
||||||
|
|
||||||
|
// encoding measurements:
|
||||||
|
p := json.decode(Person, s)!
|
||||||
|
|
||||||
|
for _ in 0 .. max_iterations {
|
||||||
|
es := json2.encode(p)
|
||||||
|
if es[0] != `{` {
|
||||||
|
println('json2.encode error: ${es}')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
b.measure('json2.encode')
|
||||||
|
|
||||||
|
for _ in 0 .. max_iterations {
|
||||||
|
es := json.encode(p)
|
||||||
|
if es[0] != `{` {
|
||||||
|
println('json.encode error: ${es}')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
b.measure('json.encode')
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user