Add benchmark tests #1978

Merged
lunny merged 1 commits from lunny/performance_test into master 2021-07-07 10:17:47 +00:00

View File

@ -0,0 +1,104 @@
// Copyright 2021 The Xorm Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package integrations
import (
"testing"
"github.com/stretchr/testify/assert"
)
func BenchmarkGetVars(b *testing.B) {
b.StopTimer()
assert.NoError(b, PrepareEngine())
testEngine.ShowSQL(false)
type BenchmarkGetVars struct {
Id int64
Name string
}
assert.NoError(b, testEngine.Sync2(new(BenchmarkGetVars)))
var v = BenchmarkGetVars{
Name: "myname",
}
_, err := testEngine.Insert(&v)
assert.NoError(b, err)
b.StartTimer()
var myname string
for i := 0; i < b.N; i++ {
has, err := testEngine.Cols("name").Table("benchmark_get_vars").Where("id=?", v.Id).Get(&myname)
b.StopTimer()
myname = ""
assert.True(b, has)
assert.NoError(b, err)
b.StartTimer()
}
}
func BenchmarkGetStruct(b *testing.B) {
b.StopTimer()
assert.NoError(b, PrepareEngine())
testEngine.ShowSQL(false)
type BenchmarkGetStruct struct {
Id int64
Name string
}
assert.NoError(b, testEngine.Sync2(new(BenchmarkGetStruct)))
var v = BenchmarkGetStruct{
Name: "myname",
}
_, err := testEngine.Insert(&v)
assert.NoError(b, err)
b.StartTimer()
var myname BenchmarkGetStruct
for i := 0; i < b.N; i++ {
has, err := testEngine.ID(v.Id).Get(&myname)
b.StopTimer()
myname.Id = 0
myname.Name = ""
assert.True(b, has)
assert.NoError(b, err)
b.StartTimer()
}
}
func BenchmarkFindStruct(b *testing.B) {
b.StopTimer()
assert.NoError(b, PrepareEngine())
testEngine.ShowSQL(false)
type BenchmarkFindStruct struct {
Id int64
Name string
}
assert.NoError(b, testEngine.Sync2(new(BenchmarkFindStruct)))
var v = BenchmarkFindStruct{
Name: "myname",
}
_, err := testEngine.Insert(&v)
assert.NoError(b, err)
b.StartTimer()
var mynames = make([]BenchmarkFindStruct, 0, 1)
for i := 0; i < b.N; i++ {
err := testEngine.Find(&mynames)
b.StopTimer()
mynames = make([]BenchmarkFindStruct, 0, 1)
assert.NoError(b, err)
b.StartTimer()
}
}