github.com/champon1020/gsorm@v0.1.1/benchmark/selectall_struct_test.go (about) 1 package benchmark 2 3 import ( 4 "database/sql" 5 "testing" 6 7 "github.com/champon1020/gsorm" 8 "github.com/go-gorp/gorp" 9 "github.com/jmoiron/sqlx" 10 "gorm.io/driver/mysql" 11 "gorm.io/gorm" 12 ) 13 14 func BenchmarkSelectAll_Struct_standard(b *testing.B) { 15 db, err := sql.Open("mysql", dsn) 16 if err != nil { 17 b.Fatal(err) 18 } 19 defer db.Close() 20 21 b.ResetTimer() 22 23 rows, err := db.Query("SELECT * FROM employees") 24 if err != nil || rows == nil { 25 b.Fatal(err) 26 } 27 defer rows.Close() 28 29 var emp []Employee 30 for rows.Next() { 31 var e Employee 32 if err := rows.Scan(&e.EmpNo, 33 &e.BirthDate, 34 &e.FirstName, 35 &e.LastName, 36 &e.Gender, 37 &e.HireDate); err != nil { 38 b.Fatal(err) 39 } 40 emp = append(emp, e) 41 } 42 } 43 44 func BenchmarkSelectAll_Struct_gsorm(b *testing.B) { 45 db, err := gsorm.Open("mysql", dsn) 46 if err != nil { 47 b.Fatal(err) 48 } 49 defer db.Close() 50 51 b.ResetTimer() 52 53 var emp []Employee 54 err = gsorm.Select(db).From("employees").Query(&emp) 55 if err != nil { 56 b.Fatal(err) 57 } 58 } 59 60 func BenchmarkSelectAll_Struct_gorm(b *testing.B) { 61 db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) 62 if err != nil { 63 b.Fatal(err) 64 } 65 66 b.ResetTimer() 67 68 var emp []Employee 69 err = db.Find(&emp).Error 70 if err != nil { 71 b.Fatal(err) 72 } 73 } 74 75 func BenchmarkSelectAll_Struct_sqlx(b *testing.B) { 76 db, err := sqlx.Connect("mysql", dsn) 77 if err != nil { 78 b.Fatal(err) 79 } 80 defer db.Close() 81 82 b.ResetTimer() 83 84 var emp []Employee 85 err = db.Select(&emp, "SELECT * FROM employees") 86 if err != nil { 87 b.Fatal(err) 88 } 89 } 90 91 func BenchmarkSelectAll_Struct_gorp(b *testing.B) { 92 db, err := sql.Open("mysql", dsn) 93 if err != nil { 94 b.Fatal(err) 95 } 96 defer db.Close() 97 dbmap := &gorp.DbMap{Db: db, Dialect: gorp.MySQLDialect{Engine: "InnoDB", Encoding: "UTF8"}} 98 99 b.ResetTimer() 100 101 var emp []Employee 102 _, err = dbmap.Select(&emp, "SELECT * FROM employees") 103 if err != nil { 104 b.Fatal(err) 105 } 106 }