Skip to content

Commit 015c518

Browse files
committed
Add benchmarks
1 parent b904058 commit 015c518

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed

bench_test.go

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
package expr
2+
3+
import (
4+
"github.com/dop251/goja"
5+
"github.com/robertkrimen/otto"
6+
"testing"
7+
)
8+
9+
type segment struct {
10+
Origin string
11+
}
12+
type passengers struct {
13+
Adults int
14+
}
15+
type request struct {
16+
Segments []*segment
17+
Passengers *passengers
18+
Marker string
19+
}
20+
21+
func Benchmark_expr(b *testing.B) {
22+
r := &request{
23+
Segments: []*segment{
24+
{Origin: "MOW"},
25+
},
26+
Passengers: &passengers{
27+
Adults: 2,
28+
},
29+
Marker: "test",
30+
}
31+
32+
script, err := Parse(`Segments[0].Origin == "MOW" && Passengers.Adults == 2 && Marker == "test"`)
33+
if err != nil {
34+
b.Fatal(err)
35+
}
36+
37+
for n := 0; n < b.N; n++ {
38+
Run(script, r)
39+
}
40+
}
41+
42+
func Benchmark_otto(b *testing.B) {
43+
r := &request{
44+
Segments: []*segment{
45+
{Origin: "MOW"},
46+
},
47+
Passengers: &passengers{
48+
Adults: 2,
49+
},
50+
Marker: "test",
51+
}
52+
53+
vm := otto.New()
54+
55+
script, err := vm.Compile("", `r.Segments[0].Origin == "MOW" && r.Passengers.Adults == 2 && r.Marker == "test"`)
56+
if err != nil {
57+
b.Fatal(err)
58+
}
59+
60+
for n := 0; n < b.N; n++ {
61+
vm.Set("r", r)
62+
vm.Run(script)
63+
}
64+
}
65+
66+
func Benchmark_goja(b *testing.B) {
67+
r := &request{
68+
Segments: []*segment{
69+
{Origin: "MOW"},
70+
},
71+
Passengers: &passengers{
72+
Adults: 2,
73+
},
74+
Marker: "test",
75+
}
76+
77+
vm := goja.New()
78+
program, err := goja.Compile("", `r.Segments[0].Origin == "MOW" && r.Passengers.Adults == 2 && r.Marker == "test"`, false)
79+
if err != nil {
80+
b.Fatal(err)
81+
}
82+
83+
for n := 0; n < b.N; n++ {
84+
vm.Set("r", r)
85+
vm.RunProgram(program)
86+
}
87+
}

0 commit comments

Comments
 (0)