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  }