forked from mirror/gorm
85 lines
1.5 KiB
Go
85 lines
1.5 KiB
Go
package tests_test
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
. "gorm.io/gorm/utils/tests"
|
|
)
|
|
|
|
func BenchmarkCreate(b *testing.B) {
|
|
user := *GetUser("bench", Config{})
|
|
|
|
for x := 0; x < b.N; x++ {
|
|
user.ID = 0
|
|
DB.Create(&user)
|
|
}
|
|
}
|
|
|
|
func BenchmarkFind(b *testing.B) {
|
|
user := *GetUser("find", Config{})
|
|
DB.Create(&user)
|
|
|
|
for x := 0; x < b.N; x++ {
|
|
DB.Find(&User{}, "id = ?", user.ID)
|
|
}
|
|
}
|
|
|
|
func BenchmarkScan(b *testing.B) {
|
|
user := *GetUser("scan", Config{})
|
|
DB.Create(&user)
|
|
|
|
var u User
|
|
b.ResetTimer()
|
|
for x := 0; x < b.N; x++ {
|
|
DB.Raw("select * from users where id = ?", user.ID).Scan(&u)
|
|
}
|
|
}
|
|
|
|
func BenchmarkScanSlice(b *testing.B) {
|
|
DB.Exec("delete from users")
|
|
for i := 0; i < 10_000; i++ {
|
|
user := *GetUser(fmt.Sprintf("scan-%d", i), Config{})
|
|
DB.Create(&user)
|
|
}
|
|
|
|
var u []User
|
|
b.ResetTimer()
|
|
for x := 0; x < b.N; x++ {
|
|
DB.Raw("select * from users").Scan(&u)
|
|
}
|
|
}
|
|
|
|
func BenchmarkScanSlicePointer(b *testing.B) {
|
|
DB.Exec("delete from users")
|
|
for i := 0; i < 10_000; i++ {
|
|
user := *GetUser(fmt.Sprintf("scan-%d", i), Config{})
|
|
DB.Create(&user)
|
|
}
|
|
|
|
var u []*User
|
|
b.ResetTimer()
|
|
for x := 0; x < b.N; x++ {
|
|
DB.Raw("select * from users").Scan(&u)
|
|
}
|
|
}
|
|
|
|
func BenchmarkUpdate(b *testing.B) {
|
|
user := *GetUser("find", Config{})
|
|
DB.Create(&user)
|
|
|
|
for x := 0; x < b.N; x++ {
|
|
DB.Model(&user).Updates(map[string]interface{}{"Age": x})
|
|
}
|
|
}
|
|
|
|
func BenchmarkDelete(b *testing.B) {
|
|
user := *GetUser("find", Config{})
|
|
|
|
for x := 0; x < b.N; x++ {
|
|
user.ID = 0
|
|
DB.Create(&user)
|
|
DB.Delete(&user)
|
|
}
|
|
}
|