Skip to content

Commit 80cbc8b

Browse files
committed
Add WarmUp phase
1 parent 3d2d6cb commit 80cbc8b

File tree

3 files changed

+33
-3
lines changed

3 files changed

+33
-3
lines changed

framework/suite.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ func (b *benchmark) run(db *sql.DB) Result {
4545
type BenchmarkSuite struct {
4646
drivers []driver
4747
benchmarks []benchmark
48+
WarmUp func(*sql.DB) error
4849
}
4950

5051
func (bs *BenchmarkSuite) AddDriver(name, drv, dsn string) error {
@@ -83,7 +84,19 @@ func (bs *BenchmarkSuite) Run() {
8384
return
8485
}
8586

86-
fmt.Println("Run..")
87+
if bs.WarmUp != nil {
88+
for _, driver := range bs.drivers {
89+
fmt.Println("Warming up " + driver.name + "...")
90+
if err := bs.WarmUp(driver.db); err != nil {
91+
fmt.Println(err.Error())
92+
return
93+
}
94+
}
95+
fmt.Println()
96+
}
97+
98+
fmt.Println("Run Benchmarks...")
99+
fmt.Println()
87100

88101
for _, benchmark := range bs.benchmarks {
89102
fmt.Println(benchmark.name, benchmark.n, "iterations")
@@ -93,7 +106,7 @@ func (bs *BenchmarkSuite) Run() {
93106
if res.Err != nil {
94107
fmt.Println(res.Err.Error())
95108
} else {
96-
fmt.Println(res.Duration.String(), " ", res.QueriesPerSecond())
109+
fmt.Println(res.Duration.String(), " \t", res.QueriesPerSecond(), "queries/sec")
97110
}
98111
}
99112
fmt.Println()

main.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,32 @@ package main
22

33
import (
44
"./framework"
5+
"database/sql"
56
"fmt"
67
_ "github.com/go-sql-driver/mysql"
78
_ "github.com/ziutek/mymysql/godrv"
89
)
910

11+
func warmup(db *sql.DB) error {
12+
for i := 0; i < 100000; i++ {
13+
rows, err := db.Query("SELECT \"Hello Gophers!\"")
14+
if err != nil {
15+
return err
16+
}
17+
18+
if err = rows.Close(); err != nil {
19+
return err
20+
}
21+
}
22+
return nil
23+
}
24+
1025
func main() {
1126
var err error
1227

13-
bs := framework.BenchmarkSuite{}
28+
bs := framework.BenchmarkSuite{
29+
WarmUp: warmup,
30+
}
1431

1532
if err = bs.AddDriver("mymysql godrv", "mymysql", "gotest/root/root"); err != nil {
1633
fmt.Println(err)

sql-benchmark.exe

-6.46 MB
Binary file not shown.

0 commit comments

Comments
 (0)