Skip to content

Instantly share code, notes, and snippets.

@TrinhTrungDung
Created March 20, 2020 12:34
Show Gist options
  • Save TrinhTrungDung/6f96fb7ff0eec5decafee6a08ca27e61 to your computer and use it in GitHub Desktop.
Save TrinhTrungDung/6f96fb7ff0eec5decafee6a08ca27e61 to your computer and use it in GitHub Desktop.
Test benchmark using INSERT without batching
func BenchmarkCreate(b *testing.B) {
db, err := gorm.Open("postgres", "host=localhost port=5432 user=testuser dbname=testdb password=123456 sslmode=disable")
if err != nil {
fmt.Println(err)
}
defer db.Close()
users := stubUsers(b)
tx := db.Begin()
valueStrings := []string{}
valueArgs := []interface{}{}
for _, user := range users {
valueStrings = append(valueStrings, "(?, ?)")
valueArgs = append(valueArgs, user.Name)
valueArgs = append(valueArgs, user.Password)
}
stmt := fmt.Sprintf("INSERT INTO users (name, password) VALUES %s", strings.Join(valueStrings, ","))
err = tx.Exec(stmt, valueArgs...).Error
if err != nil {
tx.Rollback()
fmt.Println(err)
}
err = tx.Commit().Error
if err != nil {
fmt.Println(err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment