qb: benchmark
This commit is contained in:
38
README.md
38
README.md
@@ -69,3 +69,41 @@ p := &Person{
|
||||
```
|
||||
|
||||
For more details see [example test](https://github.com/scylladb/gocqlx/blob/master/example_test.go).
|
||||
|
||||
## Performance
|
||||
|
||||
Gocqlx is fast, below is a benchmark result comparing `gocqlx` to raw `gocql` on
|
||||
my machine, see the benchmark [here](https://github.com/scylladb/gocqlx/blob/master/benchmark_test.go).
|
||||
|
||||
For query binding gocqlx is faster as it does not require parameter rewriting
|
||||
while binding. For get and insert the performance is comparable.
|
||||
|
||||
```
|
||||
BenchmarkE2EGocqlInsert-4 1000 1580420 ns/op 2624 B/op 59 allocs/op
|
||||
BenchmarkE2EGocqlxInsert-4 2000 648769 ns/op 1557 B/op 34 allocs/op
|
||||
BenchmarkE2EGocqlGet-4 3000 664618 ns/op 1086 B/op 29 allocs/op
|
||||
BenchmarkE2EGocqlxGet-4 3000 631415 ns/op 1440 B/op 32 allocs/op
|
||||
BenchmarkE2EGocqlSelect-4 50 35646283 ns/op 34072 B/op 922 allocs/op
|
||||
BenchmarkE2EGocqlxSelect-4 50 37128897 ns/op 28304 B/op 933 allocs/op
|
||||
```
|
||||
|
||||
Gocqlx comes with automatic snake case support for field names and does not
|
||||
require manual tagging. This is also fast, below is a comparison to
|
||||
`strings.ToLower` function (`sqlx` default).
|
||||
|
||||
```
|
||||
BenchmarkSnakeCase-4 10000000 124 ns/op 32 B/op 2 allocs/op
|
||||
BenchmarkToLower-4 100000000 57.9 ns/op 0 B/op 0 allocs/op
|
||||
```
|
||||
|
||||
Building queries is fast and low on allocations too.
|
||||
|
||||
```
|
||||
BenchmarkCmp-4 3000000 464 ns/op 112 B/op 3 allocs/op
|
||||
BenchmarkDeleteBuilder-4 10000000 214 ns/op 112 B/op 2 allocs/op
|
||||
BenchmarkInsertBuilder-4 20000000 103 ns/op 64 B/op 1 allocs/op
|
||||
BenchmarkSelectBuilder-4 10000000 214 ns/op 112 B/op 2 allocs/op
|
||||
BenchmarkUpdateBuilder-4 10000000 212 ns/op 112 B/op 2 allocs/op
|
||||
```
|
||||
|
||||
Enyoy!
|
||||
|
||||
Reference in New Issue
Block a user