Skip to content

Commit 8c85695

Browse files
committed
add simple benchmarks for speed testing
1 parent 26af0eb commit 8c85695

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

benchmark_test.go

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package mysql
2+
3+
import (
4+
"database/sql"
5+
"strings"
6+
"testing"
7+
)
8+
9+
var (
10+
// dsn from driver_test.go
11+
sample = []byte(strings.Repeat("0123456789abcdef", 1024*1024))
12+
)
13+
14+
func BenchmarkRoundtripText(b *testing.B) {
15+
db, err := sql.Open("mysql", dsn)
16+
if err != nil {
17+
b.Fatalf("crashed")
18+
}
19+
var result string
20+
for i := 0; i < b.N; i++ {
21+
length := 16 + i%(4*b.N)
22+
test := string(sample[0:length])
23+
rows, err := db.Query("SELECT \"" + test + "\"")
24+
if err != nil {
25+
b.Fatalf("crashed")
26+
}
27+
if !rows.Next() {
28+
rows.Close()
29+
b.Fatalf("crashed")
30+
}
31+
err = rows.Scan(&result)
32+
if err != nil {
33+
rows.Close()
34+
b.Fatalf("crashed")
35+
}
36+
if result != test {
37+
rows.Close()
38+
b.Errorf("mismatch")
39+
}
40+
rows.Close()
41+
}
42+
}
43+
44+
func BenchmarkRoundtripPrepared(b *testing.B) {
45+
db, err := sql.Open("mysql", dsn)
46+
if err != nil {
47+
b.Fatalf("crashed")
48+
}
49+
var result string
50+
stmt, err := db.Prepare("SELECT ?")
51+
if err != nil {
52+
b.Fatalf("crashed")
53+
}
54+
for i := 0; i < b.N; i++ {
55+
length := 16 + i%(4*b.N)
56+
test := string(sample[0:length])
57+
rows, err := stmt.Query(test)
58+
if err != nil {
59+
b.Fatalf("crashed")
60+
}
61+
if !rows.Next() {
62+
rows.Close()
63+
b.Fatalf("crashed")
64+
}
65+
err = rows.Scan(&result)
66+
if err != nil {
67+
rows.Close()
68+
b.Fatalf("crashed")
69+
}
70+
if result != test {
71+
rows.Close()
72+
b.Errorf("mismatch")
73+
}
74+
rows.Close()
75+
}
76+
}

0 commit comments

Comments
 (0)