xorm/benchmark_base_test.go

181 lines
3.8 KiB
Go
Raw Normal View History

package xorm
import (
2013-12-09 02:29:23 +00:00
"database/sql"
"testing"
)
type BigStruct struct {
2013-12-09 02:29:23 +00:00
Id int64
Name string
Title string
Age string
Alias string
NickName string
}
2013-12-04 07:03:21 +00:00
func doBenchDriverInsert(engine *Engine, db *sql.DB, b *testing.B) {
2013-12-09 02:29:23 +00:00
b.StopTimer()
err := engine.CreateTables(&BigStruct{})
if err != nil {
b.Error(err)
return
}
doBenchDriverInsertS(db, b)
err = engine.DropTables(&BigStruct{})
if err != nil {
b.Error(err)
return
}
2013-12-04 07:03:21 +00:00
}
func doBenchDriverInsertS(db *sql.DB, b *testing.B) {
2013-12-09 02:29:23 +00:00
b.StartTimer()
for i := 0; i < b.N; i++ {
_, err := db.Exec(`insert into big_struct (name, title, age, alias, nick_name)
values ('fafdasf', 'fadfa', 'afadfsaf', 'fadfafdsafd', 'fadfafdsaf')`)
if err != nil {
b.Error(err)
return
}
}
b.StopTimer()
2013-12-04 07:03:21 +00:00
}
func doBenchDriverFind(engine *Engine, db *sql.DB, b *testing.B) {
2013-12-09 02:29:23 +00:00
b.StopTimer()
err := engine.CreateTables(&BigStruct{})
if err != nil {
b.Error(err)
return
}
doBenchDriverFindS(db, b)
err = engine.DropTables(&BigStruct{})
if err != nil {
b.Error(err)
return
}
2013-12-04 07:03:21 +00:00
}
func doBenchDriverFindS(db *sql.DB, b *testing.B) {
2013-12-09 02:29:23 +00:00
b.StopTimer()
for i := 0; i < 100; i++ {
_, err := db.Exec(`insert into big_struct (name, title, age, alias, nick_name)
values ('fafdasf', 'fadfa', 'afadfsaf', 'fadfafdsafd', 'fadfafdsaf')`)
if err != nil {
b.Error(err)
return
}
}
b.StartTimer()
for i := 0; i < b.N; i++ {
_, err := db.Query("select * from big_struct limit 50")
if err != nil {
b.Error(err)
return
}
}
b.StopTimer()
2013-12-04 07:03:21 +00:00
}
func doBenchInsert(engine *Engine, b *testing.B) {
2013-12-09 02:29:23 +00:00
b.StopTimer()
bs := &BigStruct{0, "fafdasf", "fadfa", "afadfsaf", "fadfafdsafd", "fadfafdsaf"}
err := engine.CreateTables(bs)
if err != nil {
b.Error(err)
return
}
b.StartTimer()
for i := 0; i < b.N; i++ {
bs.Id = 0
_, err = engine.Insert(bs)
if err != nil {
b.Error(err)
return
}
}
b.StopTimer()
err = engine.DropTables(bs)
if err != nil {
b.Error(err)
return
}
2013-12-04 07:03:21 +00:00
}
func doBenchFind(engine *Engine, b *testing.B) {
2013-12-09 02:29:23 +00:00
b.StopTimer()
bs := &BigStruct{0, "fafdasf", "fadfa", "afadfsaf", "fadfafdsafd", "fadfafdsaf"}
err := engine.CreateTables(bs)
if err != nil {
b.Error(err)
return
}
for i := 0; i < 100; i++ {
bs.Id = 0
_, err = engine.Insert(bs)
if err != nil {
b.Error(err)
return
}
}
b.StartTimer()
for i := 0; i < b.N; i++ {
bss := new([]BigStruct)
err = engine.Limit(50).Find(bss)
if err != nil {
b.Error(err)
return
}
}
b.StopTimer()
err = engine.DropTables(bs)
if err != nil {
b.Error(err)
return
}
}
2013-12-04 07:03:21 +00:00
func doBenchFindPtr(engine *Engine, b *testing.B) {
2013-12-09 02:29:23 +00:00
b.StopTimer()
bs := &BigStruct{0, "fafdasf", "fadfa", "afadfsaf", "fadfafdsafd", "fadfafdsaf"}
err := engine.CreateTables(bs)
if err != nil {
b.Error(err)
return
}
for i := 0; i < 100; i++ {
bs.Id = 0
_, err = engine.Insert(bs)
if err != nil {
b.Error(err)
return
}
}
b.StartTimer()
for i := 0; i < b.N; i++ {
bss := new([]*BigStruct)
err = engine.Limit(50).Find(bss)
if err != nil {
b.Error(err)
return
}
}
b.StopTimer()
err = engine.DropTables(bs)
if err != nil {
b.Error(err)
return
}
2013-12-04 07:03:21 +00:00
}