1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package clause_test
- import (
- "sync"
- "testing"
- "github.com/jinzhu/gorm"
- "github.com/jinzhu/gorm/clause"
- "github.com/jinzhu/gorm/schema"
- "github.com/jinzhu/gorm/tests"
- )
- func BenchmarkSelect(b *testing.B) {
- user, _, _ := schema.Parse(&tests.User{}, &sync.Map{}, db.NamingStrategy)
- for i := 0; i < b.N; i++ {
- stmt := gorm.Statement{DB: db, Table: user.Table, Schema: user, Clauses: map[string]clause.Clause{}}
- clauses := []clause.Interface{clause.Select{}, clause.From{}, clause.Where{Exprs: []clause.Expression{clause.Eq{Column: clause.PrimaryColumn, Value: "1"}, clause.Gt{Column: "age", Value: 18}, clause.Or(clause.Neq{Column: "name", Value: "jinzhu"})}}}
- for _, clause := range clauses {
- stmt.AddClause(clause)
- }
- stmt.Build("SELECT", "FROM", "WHERE")
- _ = stmt.SQL.String()
- }
- }
- func BenchmarkComplexSelect(b *testing.B) {
- user, _, _ := schema.Parse(&tests.User{}, &sync.Map{}, db.NamingStrategy)
- for i := 0; i < b.N; i++ {
- stmt := gorm.Statement{DB: db, Table: user.Table, Schema: user, Clauses: map[string]clause.Clause{}}
- clauses := []clause.Interface{
- clause.Select{}, clause.From{},
- clause.Where{Exprs: []clause.Expression{
- clause.Eq{Column: clause.PrimaryColumn, Value: "1"},
- clause.Gt{Column: "age", Value: 18},
- clause.Or(clause.Neq{Column: "name", Value: "jinzhu"}),
- }},
- clause.Where{Exprs: []clause.Expression{
- clause.Or(clause.Gt{Column: "score", Value: 100}, clause.Like{Column: "name", Value: "%linus%"}),
- }},
- clause.GroupBy{Columns: []clause.Column{{Name: "role"}}, Having: clause.Where{[]clause.Expression{clause.Eq{"role", "admin"}}}},
- clause.Limit{Limit: 10, Offset: 20},
- clause.OrderBy{Columns: []clause.OrderByColumn{{Column: clause.PrimaryColumn, Desc: true}}},
- }
- for _, clause := range clauses {
- stmt.AddClause(clause)
- }
- stmt.Build("SELECT", "FROM", "WHERE", "GROUP BY", "LIMIT", "ORDER BY")
- _ = stmt.SQL.String()
- }
- }
|