|
|
@@ -0,0 +1,76 @@
|
|
|
+package mysql
|
|
|
+
|
|
|
+import (
|
|
|
+ "database/sql"
|
|
|
+ "strings"
|
|
|
+ "testing"
|
|
|
+)
|
|
|
+
|
|
|
+var (
|
|
|
+ // dsn from driver_test.go
|
|
|
+ sample = []byte(strings.Repeat("0123456789abcdef", 1024*1024))
|
|
|
+)
|
|
|
+
|
|
|
+func BenchmarkRoundtripText(b *testing.B) {
|
|
|
+ db, err := sql.Open("mysql", dsn)
|
|
|
+ if err != nil {
|
|
|
+ b.Fatalf("crashed")
|
|
|
+ }
|
|
|
+ var result string
|
|
|
+ for i := 0; i < b.N; i++ {
|
|
|
+ length := 16 + i%(4*b.N)
|
|
|
+ test := string(sample[0:length])
|
|
|
+ rows, err := db.Query("SELECT \"" + test + "\"")
|
|
|
+ if err != nil {
|
|
|
+ b.Fatalf("crashed")
|
|
|
+ }
|
|
|
+ if !rows.Next() {
|
|
|
+ rows.Close()
|
|
|
+ b.Fatalf("crashed")
|
|
|
+ }
|
|
|
+ err = rows.Scan(&result)
|
|
|
+ if err != nil {
|
|
|
+ rows.Close()
|
|
|
+ b.Fatalf("crashed")
|
|
|
+ }
|
|
|
+ if result != test {
|
|
|
+ rows.Close()
|
|
|
+ b.Errorf("mismatch")
|
|
|
+ }
|
|
|
+ rows.Close()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func BenchmarkRoundtripPrepared(b *testing.B) {
|
|
|
+ db, err := sql.Open("mysql", dsn)
|
|
|
+ if err != nil {
|
|
|
+ b.Fatalf("crashed")
|
|
|
+ }
|
|
|
+ var result string
|
|
|
+ stmt, err := db.Prepare("SELECT ?")
|
|
|
+ if err != nil {
|
|
|
+ b.Fatalf("crashed")
|
|
|
+ }
|
|
|
+ for i := 0; i < b.N; i++ {
|
|
|
+ length := 16 + i%(4*b.N)
|
|
|
+ test := string(sample[0:length])
|
|
|
+ rows, err := stmt.Query(test)
|
|
|
+ if err != nil {
|
|
|
+ b.Fatalf("crashed")
|
|
|
+ }
|
|
|
+ if !rows.Next() {
|
|
|
+ rows.Close()
|
|
|
+ b.Fatalf("crashed")
|
|
|
+ }
|
|
|
+ err = rows.Scan(&result)
|
|
|
+ if err != nil {
|
|
|
+ rows.Close()
|
|
|
+ b.Fatalf("crashed")
|
|
|
+ }
|
|
|
+ if result != test {
|
|
|
+ rows.Close()
|
|
|
+ b.Errorf("mismatch")
|
|
|
+ }
|
|
|
+ rows.Close()
|
|
|
+ }
|
|
|
+}
|