当前位置: 首页 > 工具软件 > golang-gosql > 使用案例 >

benchmarksql测试mysql_golang-sql-benchmark - 流行Go数据库/SQL工具的一组基准测试集合...

巢安澜
2023-12-01

golang-db-sql-benchmark

A collection of benchmarks for popular Go database/SQL utilities

Libraries under test

database/sql SQL Execution Benchmarks:

BenchmarkPreparedStatementsNone - Runs simple queries without query arguments, so database/sql doesn't need to create a prepared statement

BenchmarkPreparedStatementsThrowaway - Runs queries with query arguments. database/sql must create and then throwaway a prepared statement each time

BenchmarkPreparedStatementsSingle - Runs queries with query arguments, but creates and reuses the a single prepared statement

Dbr/Sqlx/Gorp SQL Execution Benchmarks:

Each library under test has the same set of benchmarks, just replace Dbr in the examples with Sqlx or Gorp. Each one is run with varying number of rows, N.

BenchmarkDbrSelectIntsN - Select rows of integers into []int64's

BenchmarkDbrSelectAllN - Select rows into structs using no query arguments

BenchmarkDbrSelectAllWithArgsN - Select rows into structs using query arguments

Dbr/Squrrel SQL Building Benchamrks

Test building (but not executing) various SQL statements

BenchmarkBuilderDbrSimple - Simple SQL query with dbr

BenchmarkBuilderDbrComplex - Complex SQL query with dbr

BenchmarkBuilderSquirrelSimple - Simple SQL query with squirrel

BenchmarkBuilderSquirrelComplex - Complex SQL query with squirrel

Output

godep go test -bench=. -benchmem 2>/dev/null | column -t on @tyler-smith's 2.6 GHz i7 Macbook Pro:

BenchmarkPreparedStatementsNone 100000 23137 ns/op 612 B/op 20 allocs/op

BenchmarkPreparedStatementsThrowaway 20000 94086 ns/op 795 B/op 25 allocs/op

BenchmarkPreparedStatementsSingle 50000 33426 ns/op 652 B/op 23 allocs/op

BenchmarkDbrSelectInts1 100000 30098 ns/op 1198 B/op 22 allocs/op

BenchmarkDbrSelectInts100 20000 94477 ns/op 11645 B/op 426 allocs/op

BenchmarkDbrSelectInts1000 5000 627958 ns/op 100574 B/op 4041 allocs/op

BenchmarkDbrSelectInts10000 500 6207828 ns/op 1297929 B/op 40177 allocs/op

BenchmarkDbrSelectAll1 50000 35468 ns/op 1876 B/op 60 allocs/op

BenchmarkDbrSelectAll100 10000 157510 ns/op 29256 B/op 863 allocs/op

BenchmarkDbrSelectAll1000 2000 1436856 ns/op 272365 B/op 8078 allocs/op

BenchmarkDbrSelectAll10000 100 12927094 ns/op 2979829 B/op 80171 allocs/op

BenchmarkDbrSelectAllWithArgs1 50000 38959 ns/op 2590 B/op 72 allocs/op

BenchmarkDbrSelectAllWithArgs100 10000 162227 ns/op 29970 B/op 875 allocs/op

BenchmarkDbrSelectAllWithArgs1000 2000 1227154 ns/op 273765 B/op 8093 allocs/op

BenchmarkDbrSelectAllWithArgs10000 100 13342026 ns/op 3000164 B/op 80284 allocs/op

BenchmarkSqlxSelectInts1 20000 86128 ns/op 628 B/op 22 allocs/op

BenchmarkSqlxSelectInts100 10000 203886 ns/op 9480 B/op 426 allocs/op

BenchmarkSqlxSelectInts1000 2000 1289621 ns/op 83799 B/op 4038 allocs/op

BenchmarkSqlxSelectInts10000 100 15156243 ns/op 1134724 B/op 40139 allocs/op

BenchmarkSqlxSelectAll1 50000 32373 ns/op 959 B/op 25 allocs/op

BenchmarkSqlxSelectAll100 10000 177965 ns/op 28366 B/op 828 allocs/op

BenchmarkSqlxSelectAll1000 1000 1634705 ns/op 271352 B/op 8042 allocs/op

BenchmarkSqlxSelectAll10000 100 17483420 ns/op 2989883 B/op 80191 allocs/op

BenchmarkSqlxSelectAllWithArgs1 10000 140460 ns/op 1228 B/op 30 allocs/op

BenchmarkSqlxSelectAllWithArgs100 10000 250621 ns/op 23682 B/op 634 allocs/op

BenchmarkSqlxSelectAllWithArgs1000 2000 1548073 ns/op 229879 B/op 6049 allocs/op

BenchmarkSqlxSelectAllWithArgs10000 100 15441239 ns/op 2587009 B/op 60190 allocs/op

BenchmarkGorpSelectInts1 10000 134277 ns/op 432 B/op 15 allocs/op

BenchmarkGorpSelectAll1 50000 44086 ns/op 1983 B/op 75 allocs/op

BenchmarkGorpSelectAll100 10000 232527 ns/op 34258 B/op 978 allocs/op

BenchmarkGorpSelectAll1000 1000 1563675 ns/op 321846 B/op 9100 allocs/op

BenchmarkGorpSelectAll10000 100 16451807 ns/op 3472508 B/op 90250 allocs/op

BenchmarkGorpSelectAllWithArgs1 10000 131738 ns/op 2306 B/op 80 allocs/op

BenchmarkGorpSelectAllWithArgs100 10000 265323 ns/op 29948 B/op 785 allocs/op

BenchmarkGorpSelectAllWithArgs1000 2000 1423747 ns/op 279838 B/op 7103 allocs/op

BenchmarkGorpSelectAllWithArgs10000 100 14538568 ns/op 3072519 B/op 70263 allocs/op

BenchmarkBuilderDbrSimple 1000000 1699 ns/op 866 B/op 13 allocs/op

BenchmarkBuilderDbrComplex 500000 6193 ns/op 2190 B/op 37 allocs/op

BenchmarkBuilderSquirrelSimple 200000 8981 ns/op 2780 B/op 51 allocs/op

BenchmarkBuilderSquirrelComplex 50000 44721 ns/op 11707 B/op 259 allocs/op

Run yourself

Use the godep tool or manually install all libraries under test

Create db: mysql -e "create database golang_sql_benchmarks;"

Create schema: mysql golang_sql_benchmarks < structure.sql

Run: godep go test -bench=. -benchmem

You can set the MySQL DSN to use by setting the GOLANG_SQL_BENCHMARKS_DSN env var (defaults to root@unix(/var/run/mysqld/mysqld.sock)/golang_sql_benchmarks)

 类似资料: