Add code for benchmarking the PGX adapter

pull/2/head
Vinícius Garcia 2021-08-01 11:52:04 -03:00
parent 5d6f1d7d37
commit 87f57f665f
1 changed files with 68 additions and 0 deletions

View File

@ -52,6 +52,32 @@ func BenchmarkInsert(b *testing.B) {
}) })
}) })
pgxDB, err := ksql.NewWithPGX(ctx, driver, connStr, ksql.Config{
MaxOpenConns: 1,
})
if err != nil {
b.Fatalf("error creating pgx client: %s", err)
}
b.Run("pgx-adapter-setup", func(b *testing.B) {
err := recreateTable(connStr)
if err != nil {
b.Fatalf("error creating table: %s", err.Error())
}
b.Run("insert-one", func(b *testing.B) {
for i := 0; i < b.N; i++ {
err := pgxDB.Insert(ctx, UsersTable, &User{
Name: strconv.Itoa(i),
Age: i,
})
if err != nil {
b.Fatalf("insert error: %s", err.Error())
}
}
})
})
sqlxDB, err := sqlx.Open(driver, connStr) sqlxDB, err := sqlx.Open(driver, connStr)
sqlxDB.SetMaxOpenConns(1) sqlxDB.SetMaxOpenConns(1)
@ -139,6 +165,48 @@ func BenchmarkQuery(b *testing.B) {
}) })
}) })
pgxDB, err := ksql.NewWithPGX(ctx, driver, connStr, ksql.Config{
MaxOpenConns: 1,
})
if err != nil {
b.Fatalf("error creating pgx client: %s", err)
}
b.Run("pgx-adapter-setup", func(b *testing.B) {
err := recreateTable(connStr)
if err != nil {
b.Fatalf("error creating table: %s", err.Error())
}
err = insertUsers(connStr, 100)
if err != nil {
b.Fatalf("error inserting users: %s", err.Error())
}
b.Run("single-row", func(b *testing.B) {
for i := 0; i < b.N; i++ {
var user User
err := pgxDB.QueryOne(ctx, &user, `SELECT * FROM users OFFSET $1 LIMIT 1`, i%100)
if err != nil {
b.Fatalf("query error: %s", err.Error())
}
}
})
b.Run("multiple-rows", func(b *testing.B) {
for i := 0; i < b.N; i++ {
var users []User
err := pgxDB.Query(ctx, &users, `SELECT * FROM users OFFSET $1 LIMIT 10`, i%90)
if err != nil {
b.Fatalf("query error: %s", err.Error())
}
if len(users) < 10 {
b.Fatalf("expected 10 scanned users, but got: %d", len(users))
}
}
})
})
sqlxDB, err := sqlx.Open(driver, connStr) sqlxDB, err := sqlx.Open(driver, connStr)
sqlxDB.SetMaxOpenConns(1) sqlxDB.SetMaxOpenConns(1)