diff options
Diffstat (limited to 'dependencies/pkg/mod/github.com/jmoiron/sqlx@v1.3.5/bind_test.go')
-rw-r--r-- | dependencies/pkg/mod/github.com/jmoiron/sqlx@v1.3.5/bind_test.go | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/dependencies/pkg/mod/github.com/jmoiron/sqlx@v1.3.5/bind_test.go b/dependencies/pkg/mod/github.com/jmoiron/sqlx@v1.3.5/bind_test.go new file mode 100644 index 0000000..dfa590e --- /dev/null +++ b/dependencies/pkg/mod/github.com/jmoiron/sqlx@v1.3.5/bind_test.go @@ -0,0 +1,79 @@ +package sqlx + +import ( + "math/rand" + "testing" +) + +func oldBindType(driverName string) int { + switch driverName { + case "postgres", "pgx", "pq-timeouts", "cloudsqlpostgres", "ql": + return DOLLAR + case "mysql": + return QUESTION + case "sqlite3": + return QUESTION + case "oci8", "ora", "goracle", "godror": + return NAMED + case "sqlserver": + return AT + } + return UNKNOWN +} + +/* +sync.Map implementation: + +goos: linux +goarch: amd64 +pkg: github.com/jmoiron/sqlx +BenchmarkBindSpeed/old-4 100000000 11.0 ns/op +BenchmarkBindSpeed/new-4 24575726 50.8 ns/op + + +async.Value map implementation: + +goos: linux +goarch: amd64 +pkg: github.com/jmoiron/sqlx +BenchmarkBindSpeed/old-4 100000000 11.0 ns/op +BenchmarkBindSpeed/new-4 42535839 27.5 ns/op +*/ + +func BenchmarkBindSpeed(b *testing.B) { + testDrivers := []string{ + "postgres", "pgx", "mysql", "sqlite3", "ora", "sqlserver", + } + + b.Run("old", func(b *testing.B) { + b.StopTimer() + var seq []int + for i := 0; i < b.N; i++ { + seq = append(seq, rand.Intn(len(testDrivers))) + } + b.StartTimer() + for i := 0; i < b.N; i++ { + s := oldBindType(testDrivers[seq[i]]) + if s == UNKNOWN { + b.Error("unknown driver") + } + } + + }) + + b.Run("new", func(b *testing.B) { + b.StopTimer() + var seq []int + for i := 0; i < b.N; i++ { + seq = append(seq, rand.Intn(len(testDrivers))) + } + b.StartTimer() + for i := 0; i < b.N; i++ { + s := BindType(testDrivers[seq[i]]) + if s == UNKNOWN { + b.Error("unknown driver") + } + } + + }) +} |