github.com/systematiccaos/gorm@v1.22.6/clause/benchmarks_test.go (about) 1 package clause_test 2 3 import ( 4 "sync" 5 "testing" 6 7 "github.com/systematiccaos/gorm" 8 "github.com/systematiccaos/gorm/clause" 9 "github.com/systematiccaos/gorm/schema" 10 "github.com/systematiccaos/gorm/utils/tests" 11 ) 12 13 func BenchmarkSelect(b *testing.B) { 14 user, _ := schema.Parse(&tests.User{}, &sync.Map{}, db.NamingStrategy) 15 16 for i := 0; i < b.N; i++ { 17 stmt := gorm.Statement{DB: db, Table: user.Table, Schema: user, Clauses: map[string]clause.Clause{}} 18 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"})}}} 19 20 for _, clause := range clauses { 21 stmt.AddClause(clause) 22 } 23 24 stmt.Build("SELECT", "FROM", "WHERE") 25 _ = stmt.SQL.String() 26 } 27 } 28 29 func BenchmarkComplexSelect(b *testing.B) { 30 user, _ := schema.Parse(&tests.User{}, &sync.Map{}, db.NamingStrategy) 31 32 for i := 0; i < b.N; i++ { 33 stmt := gorm.Statement{DB: db, Table: user.Table, Schema: user, Clauses: map[string]clause.Clause{}} 34 clauses := []clause.Interface{ 35 clause.Select{}, clause.From{}, 36 clause.Where{Exprs: []clause.Expression{ 37 clause.Eq{Column: clause.PrimaryColumn, Value: "1"}, 38 clause.Gt{Column: "age", Value: 18}, 39 clause.Or(clause.Neq{Column: "name", Value: "jinzhu"}), 40 }}, 41 clause.Where{Exprs: []clause.Expression{ 42 clause.Or(clause.Gt{Column: "score", Value: 100}, clause.Like{Column: "name", Value: "%linus%"}), 43 }}, 44 clause.GroupBy{Columns: []clause.Column{{Name: "role"}}, Having: []clause.Expression{clause.Eq{"role", "admin"}}}, 45 clause.Limit{Limit: 10, Offset: 20}, 46 clause.OrderBy{Columns: []clause.OrderByColumn{{Column: clause.PrimaryColumn, Desc: true}}}, 47 } 48 49 for _, clause := range clauses { 50 stmt.AddClause(clause) 51 } 52 53 stmt.Build("SELECT", "FROM", "WHERE", "GROUP BY", "LIMIT", "ORDER BY") 54 _ = stmt.SQL.String() 55 } 56 }