Skip to content

Commit

Permalink
add all orms
Browse files Browse the repository at this point in the history
  • Loading branch information
efectn committed Jun 20, 2023
1 parent 84ce7c4 commit 9aead19
Show file tree
Hide file tree
Showing 20 changed files with 1,219 additions and 995 deletions.
5 changes: 3 additions & 2 deletions benchs/gorp.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,12 +108,13 @@ func (gorp *Gorp) Read(b *testing.B) {
}
}

// TODO: not working
func (gorp *Gorp) ReadSlice(b *testing.B) {
m := NewModel()
for i := 0; i < 100; i++ {
err := gorp.conn.Insert(m)
gorp.error(b, "read_slice", fmt.Sprintf("gorp: read_slice: %v", err))
if err != nil {
gorp.error(b, "read_slice", fmt.Sprintf("gorp: read_slice: %v", err))
}
}

b.ReportAllocs()
Expand Down
11 changes: 0 additions & 11 deletions benchs/pgx.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,6 @@ import (
"testing"
)

const (
sqlxInsertBaseSQL = `INSERT INTO models (name, title, fax, web, age, "right", counter) VALUES `
sqlxInsertValuesSQL = `($1, $2, $3, $4, $5, $6, $7)`
sqlxInsertSQL = sqlxInsertBaseSQL + sqlxInsertValuesSQL
sqlxInsertNamesSQL = `(:name, :title, :fax, :web, :age, :right, :counter)`
sqlxInsertMultiSQL = sqlxInsertBaseSQL + sqlxInsertNamesSQL
sqlxUpdateSQL = `UPDATE models SET name = $1, title = $2, fax = $3, web = $4, age = $5, "right" = $6, counter = $7 WHERE id = $8`
sqlxSelectSQL = `SELECT * FROM models WHERE id = $1`
sqlxSelectMultiSQL = `SELECT * FROM models WHERE id > 0 LIMIT 100`
)

type Pgx struct {
Instance
mu sync.Mutex
Expand Down
1 change: 1 addition & 0 deletions benchs/reform/reform_models.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package reform
//go:generate reform

// reform_models represents a row in models table.
//
//reform:models
type ReformModels struct {
ID int `reform:"id,pk"`
Expand Down
170 changes: 170 additions & 0 deletions benchs/rel.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
package benchs

import (
"context"
"fmt"
"sync"
"testing"

"github.com/go-rel/postgres"
relware "github.com/go-rel/rel"
"github.com/go-rel/rel/where"
)

type Rel struct {
Instance
mu sync.Mutex
conn relware.Repository
db relware.Adapter
iterations int // Same as b.N, just to customize it
errors map[string]string
}

func CreateRel(iterations int) Instance {
rel := &Rel{
iterations: iterations,
errors: map[string]string{},
}

return rel
}

func (rel *Rel) Name() string {
return "rel"
}

func (rel *Rel) Init() error {
var err error
rel.db, err = postgres.Open(OrmSource)
if err != nil {
return err
}

rel.conn = relware.New(rel.db)
if err := rel.conn.Ping(ctx); err != nil {
return err
}

// Disable debug logging
rel.conn.Instrumentation(func(ctx context.Context, op string, message string, args ...any) func(err error) {
return func(err error) {
if err != nil {
panic(err)
}
}
})

return nil
}

func (rel *Rel) Close() error {
return rel.db.Close()
}

func (rel *Rel) GetError(method string) string {
return rel.errors[method]
}

func (rel *Rel) Insert(b *testing.B) {
m := NewModel3()

b.ReportAllocs()
b.ResetTimer()

for i := 0; i < b.N; i++ {
m.ID = 0
err := rel.conn.Insert(ctx, m)
if err != nil {
rel.error(b, "insert", fmt.Sprintf("rel: insert: %v", err))
}
}
}

func (rel *Rel) InsertMulti(b *testing.B) {
ms := make([]*Model3, 0, 100)
for i := 0; i < 100; i++ {
ms = append(ms, NewModel3())
}

b.ReportAllocs()
b.ResetTimer()

for i := 0; i < b.N; i++ {
for _, m := range ms {
m.ID = 0
}
err := rel.conn.InsertAll(ctx, &ms)
if err != nil {
rel.error(b, "insert_multi", fmt.Sprintf("rel: insert_multi: %v", err))
}
}
}

func (rel *Rel) Update(b *testing.B) {
m := NewModel3()
m.ID = 0
err := rel.conn.Insert(ctx, m)
if err != nil {
rel.error(b, "update", fmt.Sprintf("rel: update: %v", err))
}

b.ReportAllocs()
b.ResetTimer()

for i := 0; i < b.N; i++ {
err := rel.conn.Update(ctx, m)
if err != nil {
rel.error(b, "update", fmt.Sprintf("rel: update: %v", err))
}
}
}

func (rel *Rel) Read(b *testing.B) {
m := NewModel3()
m.ID = 0
err := rel.conn.Insert(ctx, m)
if err != nil {
rel.error(b, "read", fmt.Sprintf("rel: read: %v", err))
}

b.ReportAllocs()
b.ResetTimer()

for i := 0; i < b.N; i++ {
err := rel.conn.Find(ctx, m)
if err != nil {
rel.error(b, "read", fmt.Sprintf("rel: read: %v", err))
}
}
}

func (rel *Rel) ReadSlice(b *testing.B) {
m := NewModel3()
for i := 0; i < 100; i++ {
m.ID = 0
err := rel.conn.Insert(ctx, m)
if err != nil {
rel.error(b, "read_slice", fmt.Sprintf("rel: read_slice: %v", err))
}
}

b.ReportAllocs()
b.ResetTimer()

for i := 0; i < b.N; i++ {
var ms []Model3
err := rel.conn.FindAll(ctx, &ms, where.Gt("id", 0), relware.Limit(100))
if err != nil {
rel.error(b, "read_slice", fmt.Sprintf("rel: read_slice: %v", err))
}
}
}

func (rel *Rel) error(b *testing.B, method string, err string) {
b.Helper()

rel.mu.Lock()
rel.errors[method] = err
rel.mu.Unlock()
b.Fail()
}
123 changes: 0 additions & 123 deletions benchs/rel.go.bak

This file was deleted.

0 comments on commit 9aead19

Please sign in to comment.