Skip to content

Commit 5fb4d8e

Browse files
Fix benchmark inconsistencies: sqlc, pgx, pgx_pool, sqlx (issue #97) (#98)
* Update dependancies. * Revert breaking update in upper 4.8.0. * Fix sqlc benchmark queries to others.
1 parent f8fb809 commit 5fb4d8e

19 files changed

+588
-728
lines changed

bench/dbr.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package bench
22

33
import (
4-
"github.com/efectn/go-orm-benchmarks/helper"
54
"testing"
65

6+
"github.com/efectn/go-orm-benchmarks/helper"
7+
78
dbrware "github.com/gocraft/dbr/v2"
8-
_ "github.com/jackc/pgx/v4/stdlib"
9+
_ "github.com/jackc/pgx/v5/stdlib"
910
)
1011

1112
var columns = []string{"name", "title", "fax", "web", "age", "right", "counter"}

bench/ent.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@ package bench
22

33
import (
44
"database/sql"
5-
"github.com/efectn/go-orm-benchmarks/helper"
65
"testing"
76

7+
"github.com/efectn/go-orm-benchmarks/helper"
8+
89
"entgo.io/ent/dialect"
910
entsql "entgo.io/ent/dialect/sql"
1011
entdb "github.com/efectn/go-orm-benchmarks/bench/ent"
1112
"github.com/efectn/go-orm-benchmarks/bench/ent/model"
12-
_ "github.com/jackc/pgx/v4/stdlib"
13+
_ "github.com/jackc/pgx/v5/stdlib"
1314
)
1415

1516
type Ent struct {

bench/godb.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package bench
22

33
import (
4+
"testing"
5+
46
"github.com/efectn/go-orm-benchmarks/helper"
5-
_ "github.com/jackc/pgx/v4/stdlib"
7+
_ "github.com/jackc/pgx/v5/stdlib"
68
godbware "github.com/samonzeweb/godb"
79
"github.com/samonzeweb/godb/adapters/postgresql"
8-
"testing"
910
)
1011

1112
type Godb struct {

bench/gorp.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ package bench
22

33
import (
44
"database/sql"
5-
"github.com/efectn/go-orm-benchmarks/helper"
65
"testing"
76

8-
_ "github.com/jackc/pgx/v4/stdlib"
7+
"github.com/efectn/go-orm-benchmarks/helper"
8+
9+
_ "github.com/jackc/pgx/v5/stdlib"
910
_ "github.com/lib/pq"
1011
gorpware "gopkg.in/gorp.v1"
1112
)

bench/pgx.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package bench
22

33
import (
4-
"github.com/efectn/go-orm-benchmarks/helper"
5-
pgxdb "github.com/jackc/pgx/v4"
64
"testing"
5+
6+
"github.com/efectn/go-orm-benchmarks/helper"
7+
pgxdb "github.com/jackc/pgx/v5"
78
)
89

910
type Pgx struct {

bench/pgx_pool.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package bench
22

33
import (
4-
"github.com/efectn/go-orm-benchmarks/helper"
5-
pgxdb "github.com/jackc/pgx/v4"
6-
"github.com/jackc/pgx/v4/pgxpool"
74
"testing"
5+
6+
"github.com/efectn/go-orm-benchmarks/helper"
7+
pgxdb "github.com/jackc/pgx/v5"
8+
"github.com/jackc/pgx/v5/pgxpool"
89
)
910

1011
type PgxPool struct {
@@ -22,7 +23,7 @@ func (pgx *PgxPool) Name() string {
2223

2324
func (pgx *PgxPool) Init() error {
2425
var err error
25-
pgx.conn, err = pgxpool.Connect(ctx, helper.OrmSource)
26+
pgx.conn, err = pgxpool.New(ctx, helper.OrmSource)
2627
if err != nil {
2728
return err
2829
}

bench/pop.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package bench
22

33
import (
4-
"github.com/efectn/go-orm-benchmarks/helper"
54
"testing"
65

6+
"github.com/efectn/go-orm-benchmarks/helper"
7+
78
popware "github.com/gobuffalo/pop/v6"
8-
_ "github.com/jackc/pgx/v4/stdlib"
9+
_ "github.com/jackc/pgx/v5/stdlib"
910
)
1011

1112
type Pop struct {

bench/reform.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ package bench
22

33
import (
44
"database/sql"
5-
"github.com/efectn/go-orm-benchmarks/helper"
65
"testing"
76

7+
"github.com/efectn/go-orm-benchmarks/helper"
8+
89
r "github.com/efectn/go-orm-benchmarks/bench/reform"
9-
_ "github.com/jackc/pgx/v4/stdlib"
10+
_ "github.com/jackc/pgx/v5/stdlib"
1011
"gopkg.in/reform.v1/dialects/postgresql"
1112

1213
reformware "gopkg.in/reform.v1"

bench/sqlboiler.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ package bench
22

33
import (
44
"database/sql"
5-
"github.com/efectn/go-orm-benchmarks/helper"
65
"testing"
76

7+
"github.com/efectn/go-orm-benchmarks/helper"
8+
89
models "github.com/efectn/go-orm-benchmarks/bench/sqlboiler"
9-
_ "github.com/jackc/pgx/v4/stdlib"
10+
_ "github.com/jackc/pgx/v5/stdlib"
1011
"github.com/volatiletech/sqlboiler/v4/boil"
1112
"github.com/volatiletech/sqlboiler/v4/queries/qm"
1213
)

bench/sqlc.go

Lines changed: 52 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
package bench
22

33
import (
4-
"database/sql"
5-
"github.com/efectn/go-orm-benchmarks/helper"
64
"testing"
75

6+
"github.com/efectn/go-orm-benchmarks/helper"
7+
88
"github.com/efectn/go-orm-benchmarks/bench/sqlc/db"
9+
"github.com/jackc/pgx/v5"
910
)
1011

1112
type Sqlc struct {
1213
helper.ORMInterface
1314
conn *db.Queries
14-
db *sql.DB
15+
db *pgx.Conn
1516
}
1617

1718
func CreateSqlc() helper.ORMInterface {
@@ -24,7 +25,7 @@ func (sqlc *Sqlc) Name() string {
2425

2526
func (sqlc *Sqlc) Init() error {
2627
var err error
27-
sqlc.db, err = sql.Open("pgx", helper.OrmSource)
28+
sqlc.db, err = pgx.Connect(ctx, helper.OrmSource)
2829
if err != nil {
2930
return err
3031
}
@@ -35,18 +36,39 @@ func (sqlc *Sqlc) Init() error {
3536
}
3637

3738
func (sqlc *Sqlc) Close() error {
38-
return sqlc.db.Close()
39+
return sqlc.db.Close(ctx)
3940
}
4041

4142
func (sqlc *Sqlc) Insert(b *testing.B) {
4243
m := NewModel()
4344

45+
args := db.CreateModelParams{
46+
Name: m.Name,
47+
Title: m.Title,
48+
Fax: m.Fax,
49+
Web: m.Web,
50+
Age: int32(m.Age),
51+
Right: m.Right,
52+
Counter: m.Counter,
53+
}
54+
4455
b.ReportAllocs()
4556
b.ResetTimer()
4657

4758
for i := 0; i < b.N; i++ {
4859
m.Id = 0
49-
_, err := sqlc.conn.CreateModel(ctx, db.CreateModelParams{
60+
err := sqlc.conn.CreateModel(ctx, args)
61+
if err != nil {
62+
helper.SetError(b, sqlc.Name(), "Insert", err.Error())
63+
}
64+
}
65+
}
66+
67+
func (sqlc *Sqlc) InsertMulti(b *testing.B) {
68+
ms := make([]db.InsertMultiParams, 0, 100)
69+
m := NewModel()
70+
for i := 0; i < 100; i++ {
71+
ms = append(ms, db.InsertMultiParams{
5072
Name: m.Name,
5173
Title: m.Title,
5274
Fax: m.Fax,
@@ -55,20 +77,22 @@ func (sqlc *Sqlc) Insert(b *testing.B) {
5577
Right: m.Right,
5678
Counter: m.Counter,
5779
})
80+
}
81+
82+
b.ReportAllocs()
83+
b.ResetTimer()
84+
85+
for i := 0; i < b.N; i++ {
86+
_, err := sqlc.conn.InsertMulti(ctx, ms)
5887
if err != nil {
59-
helper.SetError(b, sqlc.Name(), "Insert", err.Error())
88+
helper.SetError(b, sqlc.Name(), "InsertMulti", err.Error())
6089
}
6190
}
6291
}
6392

64-
func (sqlc *Sqlc) InsertMulti(b *testing.B) {
65-
helper.SetError(b, sqlc.Name(), "InsertMulti", "bulk-insert is not supported")
66-
}
67-
6893
func (sqlc *Sqlc) Update(b *testing.B) {
6994
m := NewModel()
70-
71-
_, err := sqlc.conn.CreateModel(ctx, db.CreateModelParams{
95+
err := sqlc.conn.CreateModel(ctx, db.CreateModelParams{
7296
Name: m.Name,
7397
Title: m.Title,
7498
Fax: m.Fax,
@@ -81,20 +105,21 @@ func (sqlc *Sqlc) Update(b *testing.B) {
81105
helper.SetError(b, sqlc.Name(), "Update", err.Error())
82106
}
83107

108+
args := db.UpdateModelParams{
109+
Name: m.Name,
110+
Title: m.Title,
111+
Fax: m.Fax,
112+
Web: m.Web,
113+
Age: int32(m.Age),
114+
Right: m.Right,
115+
Counter: m.Counter,
116+
ID: int32(m.Id),
117+
}
84118
b.ReportAllocs()
85119
b.ResetTimer()
86120

87121
for i := 0; i < b.N; i++ {
88-
err := sqlc.conn.UpdateModel(ctx, db.UpdateModelParams{
89-
Name: m.Name,
90-
Title: m.Title,
91-
Fax: m.Fax,
92-
Web: m.Web,
93-
Age: int32(m.Age),
94-
Right: m.Right,
95-
Counter: m.Counter,
96-
ID: int32(m.Id),
97-
})
122+
err := sqlc.conn.UpdateModel(ctx, args)
98123
if err != nil {
99124
helper.SetError(b, sqlc.Name(), "Update", err.Error())
100125
}
@@ -104,7 +129,7 @@ func (sqlc *Sqlc) Update(b *testing.B) {
104129
func (sqlc *Sqlc) Read(b *testing.B) {
105130
m := NewModel()
106131

107-
output, err := sqlc.conn.CreateModel(ctx, db.CreateModelParams{
132+
err := sqlc.conn.CreateModel(ctx, db.CreateModelParams{
108133
Name: m.Name,
109134
Title: m.Title,
110135
Fax: m.Fax,
@@ -113,7 +138,7 @@ func (sqlc *Sqlc) Read(b *testing.B) {
113138
Right: m.Right,
114139
Counter: m.Counter,
115140
})
116-
m.Id = int(output.ID)
141+
m.Id = 1
117142
if err != nil {
118143
helper.SetError(b, sqlc.Name(), "Read", err.Error())
119144
}
@@ -135,7 +160,7 @@ func (sqlc *Sqlc) ReadSlice(b *testing.B) {
135160
for i := 0; i < 100; i++ {
136161
m.Id = 0
137162

138-
_, err := sqlc.conn.CreateModel(ctx, db.CreateModelParams{
163+
err := sqlc.conn.CreateModel(ctx, db.CreateModelParams{
139164
Name: m.Name,
140165
Title: m.Title,
141166
Fax: m.Fax,
@@ -153,10 +178,7 @@ func (sqlc *Sqlc) ReadSlice(b *testing.B) {
153178
b.ResetTimer()
154179

155180
for i := 0; i < b.N; i++ {
156-
_, err := sqlc.conn.ListModels(ctx, db.ListModelsParams{
157-
ID: 0,
158-
Limit: 100,
159-
})
181+
_, err := sqlc.conn.ListModels(ctx)
160182
if err != nil {
161183
helper.SetError(b, sqlc.Name(), "ReadSlice", err.Error())
162184
}

0 commit comments

Comments
 (0)