Skip to content

Instantly share code, notes, and snippets.

@odeke-em
Last active May 6, 2020 03:36
Show Gist options
  • Save odeke-em/929d308f1fb80a1661d2e3ccb6a7b58b to your computer and use it in GitHub Desktop.
Save odeke-em/929d308f1fb80a1661d2e3ccb6a7b58b to your computer and use it in GitHub Desktop.
Benchmarking spanner_v1 usages vs spanner_dbapi for time spent
#!/bin/env python3
# Copyright 2020 Google LLC
#
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file or at
# https://developers.google.com/open-source/licenses/bsd
import time
from uuid import uuid4
import spanner_dbapi
from google.cloud import spanner_v1
from google.cloud.spanner_v1 import param_types as types
def main():
client = spanner_v1.Client()
ins = client.instance('benchmarking')
if not ins.exists():
ins.configuration_name = 'projects/' + client.project + '/instanceConfigs/regional-us-west2'
_ = ins.create()
db = ins.database('db1')
if not db.exists():
_ = db.create()
conn = spanner_dbapi.connect(project=client.project, database=db.database_id, instance=ins.instance_id)
nruns=50
diffs = dict(
ReadOnly=benchmark_read_only(db, conn, nruns),
ReadWrite=benchmark_read_write(db, conn, nruns),
CreateDestroyTable=benchmark_create_destroy_table(db, conn, nruns),
Insert20Params=benchmark_insert(db, conn, nruns=nruns, field_count=20),
Insert50Params=benchmark_insert(db, conn, nruns=nruns, field_count=50),
Insert100Params=benchmark_insert(db, conn, nruns=nruns, field_count=100),
)
conn.close()
f_v1 = open('bench_v1.txt', 'w')
f_dbapi = open('bench_dbapi.txt', 'w')
for benchmarkName, time_deltas_tuple in diffs.items():
v1, dbapi = time_deltas_tuple
for i in range(len(v1)):
f_v1.write('Benchmark%s 1 %f ns/op\n' % (benchmarkName, v1[i]))
f_dbapi.write('Benchmark%s 1 %f ns/op\n' % (benchmarkName, dbapi[i]))
f_v1.close()
f_dbapi.close()
query_information_schema = "SELECT * FROM INFORMATION_SCHEMA.TABLES as it WHERE it.TABLE_SCHEMA=''"
def benchmark_create_destroy_table(db, conn, nruns=5):
def create_table_v1(db, n):
names = ['T_v1_%d' % i for i in range(n)]
stmts = []
for table_name in names:
sql = '''DROP TABLE ''' + table_name
stmts.append(sql)
try:
_ = db.update_ddl(stmts).result()
except Exception as e:
pass
_ = list(with_v1_with_snapshot(db)(query_information_schema))
for table_name in names:
sql = '''CREATE TABLE %s(
name STRING(MAX),
id INT64
) PRIMARY KEY(id)''' % table_name
_ = db.update_ddl([sql]).result()
_ = list(with_v1_with_snapshot(db)(query_information_schema))
# Now drop the tables.
for table_name in names:
sql = '''DROP TABLE ''' + table_name
_ = db.update_ddl([sql]).result()
_ = list(with_v1_with_snapshot(db)(query_information_schema))
n_tables = 3
v1_time_deltas = repeat_timed(nruns, create_table_v1, db, n_tables)
def create_table_dbapi(cursor, n):
names = ['T_dbapi_%d' % i for i in range(n)]
for table_name in names:
sql = '''DROP TABLE ''' + table_name
cursor.execute(sql)
try:
_ = list(with_dbapi(conn)(query_information_schema))
except Exception as e:
pass
for table_name in names:
sql = '''CREATE TABLE %s(
name STRING(MAX),
id INT64
) PRIMARY KEY(id)''' % table_name
cursor.execute(sql)
_ = list(with_dbapi(conn)(query_information_schema))
for table_name in names:
sql = '''DROP TABLE ''' + table_name
cursor.execute(sql)
_ = list(with_dbapi(conn)(query_information_schema))
with conn.cursor() as cursor:
dbapi_time_deltas = repeat_timed(nruns, create_table_dbapi, cursor, n_tables)
return v1_time_deltas, dbapi_time_deltas
def benchmark_read_write(db, conn, nruns=20):
names = ('rw_v1', 'rw_dbapi',)
# Clear any prior remnants.
clear_ddls = ['DROP TABLE ' + name for name in names]
try:
_ = db.update_ddl(clear_ddls).result()
except Exception as e:
pass
create_ddls = []
for table_name in names:
create_ddls.append(
'''CREATE TABLE %s(
age INT64,
id STRING(64),
last_ping INT64
) PRIMARY KEY(id)''' % table_name)
_ = db.update_ddl(create_ddls).result()
# Populate the tables.
n_items = 200
values = [(i, '%d' % (uuid4().int & 0x7FFFFFFFFFFFFFFF),) for i in range(n_items)]
def populate_tables(txn):
_ = txn.insert(names[0], ['age', 'id'], values)
_ = txn.insert(names[1], ['age', 'id'], values)
db.run_in_transaction(populate_tables)
def rw_v1(db):
with db.snapshot(multi_use=True) as snapshot:
res = list(snapshot.execute_sql('SELECT * FROM rw_v1'))
if len(res) != n_items:
raise Exception('rw_v1: n_items mismatch: got %d wanted %d' % (len(res), n_items))
_ = list(snapshot.execute_sql('SELECT * from rw_v1 WHERE age <= @n',
params={'n': int(n_items/2)},
param_types={'n': types.INT64}))
def finish_rw(txn):
res = txn.execute_sql('UPDATE rw_v1 as t SET last_ping=@lp WHERE age >= @ag',
params={'lp': 10, 'ag': int(n_items/3)},
param_types={'lp': types.INT64, 'ag': types.INT64})
if hasattr(res, '__iter__'):
_ = list(res)
_ = txn.execute_sql('DELETE FROM rw_v1 WHERE age <= @n',
params={'n': int(n_items/5)},
param_types={'n': types.INT64})
res = txn.execute_sql('SELECT COUNT(*) FROM rw_v1')
if hasattr(res, '__iter__'):
_ = list(res)
db.run_in_transaction(finish_rw)
v1_time_deltas = repeat_timed(nruns, rw_v1, db)
# Now that they have data, read and write to them.
def rw_dbapi(cursor):
cursor.execute('SELECT * FROM rw_dbapi')
res = list(cursor)
if False and len(res) != n_items:
raise Exception('rw_dbapi: n_items mismatch: got %d wanted %d' % (len(res), n_items))
cursor.execute('SELECT * from rw_dbapi WHERE age <= %s', (n_items/2,))
_ = list(cursor)
cursor.execute('UPDATE rw_dbapi as t SET last_ping=%s WHERE age >= %s', (10, n_items/3,))
_ = cursor.rowcount
cursor.execute('DELETE FROM rw_dbapi WHERE age <= %s', (n_items/5,))
cursor.execute('SELECT COUNT(*) FROM rw_dbapi')
with conn.cursor() as cursor:
dbapi_time_deltas = repeat_timed(nruns, rw_dbapi, cursor)
return v1_time_deltas, dbapi_time_deltas
def benchmark_read_only(db, conn, nruns=20):
names = ('r_v1', 'r_dbapi',)
# Clear any prior remnants.
clear_ddls = ['DROP TABLE ' + name for name in names]
try:
_ = db.update_ddl(clear_ddls).result()
except Exception as e:
pass
create_ddls = []
for table_name in names:
create_ddls.append(
'''CREATE TABLE %s(
age INT64,
id STRING(64),
last_ping INT64
) PRIMARY KEY(id)''' % table_name)
_ = db.update_ddl(create_ddls).result()
# Populate the tables.
n_items = 200
values = [(i, '%d' % (uuid4().int & 0x7FFFFFFFFFFFFFFF),) for i in range(n_items)]
def populate_tables(txn):
_ = txn.insert(names[0], ['age', 'id'], values)
_ = txn.insert(names[1], ['age', 'id'], values)
db.run_in_transaction(populate_tables)
def r_v1(db):
with db.snapshot(multi_use=True) as snapshot:
res = list(snapshot.execute_sql('SELECT * FROM r_v1'))
if len(res) != n_items:
raise Exception('r_v1: n_items mismatch: got %d wanted %d' % (len(res), n_items))
_ = list(snapshot.execute_sql('SELECT * from r_v1 WHERE age <= @n',
params={'n': int(n_items/2)}, param_types={'n': types.INT64}))
_ = list(snapshot.execute_sql(query_information_schema))
_ = list(snapshot.execute_sql('SELECT COUNT(*) FROM r_v1'))
v1_time_deltas = repeat_timed(nruns, r_v1, db)
def r_dbapi(cursor):
cursor.execute('SELECT * FROM r_dbapi')
res = list(cursor)
if len(res) != n_items:
raise Exception('r_dbapi: n_items mismatch: got %d wanted %d' % (len(res), n_items))
cursor.execute('SELECT * from r_dbapi WHERE age <= %s', (n_items/2,))
_ = list(cursor)
cursor.execute(query_information_schema)
_ = list(cursor)
cursor.execute('SELECT COUNT(*) FROM r_dbapi')
_ = list(cursor)
with conn.cursor() as cursor:
dbapi_time_deltas = repeat_timed(nruns, r_dbapi, cursor)
return v1_time_deltas, dbapi_time_deltas
def uniq_id():
return uuid4().int & 0x7FFFFFFFFFFFFFFF
def benchmark_insert(db, conn, nruns=100, field_count=50):
'''
Test out: INSERT INTO T (fields...) VALUES (%s, LOWER(%s), UPPER(%s), ...)
'''
v1_table_name, dbapi_table_name = 'INS_v1', 'INS_dbapi'
table_names = [v1_table_name, dbapi_table_name]
try:
drop_ddls = ['DROP TABLE %s' % table_name for table_name in table_names]
_ = db.update_ddl(drop_ddls).result()
except Exception as e:
pass
def create_table(table_name):
fields_txt = ',\n'.join(['F%d STRING(MAX)'%(i) for i in range(field_count)])
return 'CREATE TABLE %s (\n%s\n) PRIMARY KEY (F0)' % (table_name, fields_txt)
ddl = [create_table(table_name) for table_name in (v1_table_name, dbapi_table_name)]
_ = db.update_ddl(ddl).result()
v1_table_name, dbapi_table_name = table_names
fields_in_insert = ','.join(['F%d'%(i) for i in range(field_count)])
def insert_v1(db):
def insert_it(txn):
columns = []
for i in range(field_count):
column_str = '@a%d' % i
if i%3 == 0:
column_str = 'UPPER(%s)' % column_str
elif i%2 == 0:
column_str = 'LOWER(%s)' % column_str
columns.append(column_str)
fields_str = ','.join(['F%d'%(i) for i in range(field_count)])
columns_str = ','.join(columns)
sql = 'INSERT INTO %s (%s) VALUES (%s)' % (v1_table_name, fields_str, columns_str)
for x in range(1):
params={'a%d'%(i): '%s'%(uniq_id()) for i in range(field_count)}
param_types={'a%d'%(i): types.STRING for i in range(field_count)}
res = txn.execute_sql(sql, params=params, param_types=param_types)
if hasattr(res, '__iter__'):
_ = list(res)
db.run_in_transaction(insert_it)
def delete_all(txn):
res = txn.execute_sql('DELETE FROM ' + v1_table_name + ' WHERE 1=1')
if hasattr(res, '__iter__'):
_ = list(res)
_ = list(txn.execute_sql('SELECT 1'))
db.run_in_transaction(delete_all)
v1_time_deltas = repeat_timed(nruns, insert_v1, db)
def insert_dbapi(cursor):
pyfmt_args = []
for i in range(field_count):
pyfmt_arg = '%s'
if i%3 == 0:
pyfmt_arg = 'UPPER(%s)'
elif i%2 == 0:
pyfmt_arg = 'LOWER(%s)'
pyfmt_args.append(pyfmt_arg)
columns_str = ','.join(pyfmt_args)
sql = 'INSERT INTO %s (%s) VALUES (%s)' % (dbapi_table_name, fields_in_insert, columns_str)
args=['a%s' % (uniq_id()) for i in range(field_count*1)]
cursor.execute(sql, args)
cursor.execute('DELETE FROM ' +dbapi_table_name)
cursor.execute('SELECT 1')
with conn.cursor() as cursor:
dbapi_time_deltas = repeat_timed(nruns, insert_dbapi, cursor)
return v1_time_deltas, dbapi_time_deltas
def with_v1_with_snapshot(db):
def do(sql, *args, **kwargs):
with db.snapshot() as snapshot:
return snapshot.execute_sql(sql, *args, **kwargs)
return do
def with_dbapi(conn):
def do(sql, *args, **kwargs):
with conn.cursor() as cursor:
cursor.execute(sql, *args, **kwargs)
return list(cursor)
return do
def repeat_timed(n, fn, *args, **kwargs):
time_deltas = []
for i in range(n):
time_delta, _, _ = timed(fn, *args, **kwargs)
time_deltas.append(time_delta)
return time_deltas
def timed(fn, *args, **kwargs):
start = time.time_ns()
res = None
exc = None
try:
res = fn(*args, **kwargs)
except Exception as e:
exc = e
finally:
diff = time.time_ns() - start
if exc:
raise exc
return diff, res, exc
if __name__ == '__main__':
main()
BenchmarkReadOnly 1 990619000.000000 ns/op
BenchmarkReadOnly 1 248313000.000000 ns/op
BenchmarkReadOnly 1 234537000.000000 ns/op
BenchmarkReadOnly 1 240783000.000000 ns/op
BenchmarkReadOnly 1 227369000.000000 ns/op
BenchmarkReadOnly 1 217879000.000000 ns/op
BenchmarkReadOnly 1 238088000.000000 ns/op
BenchmarkReadOnly 1 228096000.000000 ns/op
BenchmarkReadOnly 1 242212000.000000 ns/op
BenchmarkReadOnly 1 239861000.000000 ns/op
BenchmarkReadOnly 1 235857000.000000 ns/op
BenchmarkReadOnly 1 263667000.000000 ns/op
BenchmarkReadOnly 1 238428000.000000 ns/op
BenchmarkReadOnly 1 249527000.000000 ns/op
BenchmarkReadOnly 1 241597000.000000 ns/op
BenchmarkReadOnly 1 231958000.000000 ns/op
BenchmarkReadOnly 1 225242000.000000 ns/op
BenchmarkReadOnly 1 229398000.000000 ns/op
BenchmarkReadOnly 1 245766000.000000 ns/op
BenchmarkReadOnly 1 248303000.000000 ns/op
BenchmarkReadOnly 1 232629000.000000 ns/op
BenchmarkReadOnly 1 232879000.000000 ns/op
BenchmarkReadOnly 1 245457000.000000 ns/op
BenchmarkReadOnly 1 248986000.000000 ns/op
BenchmarkReadOnly 1 226076000.000000 ns/op
BenchmarkReadOnly 1 222337000.000000 ns/op
BenchmarkReadOnly 1 244831000.000000 ns/op
BenchmarkReadOnly 1 231435000.000000 ns/op
BenchmarkReadOnly 1 242766000.000000 ns/op
BenchmarkReadOnly 1 237908000.000000 ns/op
BenchmarkReadOnly 1 221972000.000000 ns/op
BenchmarkReadOnly 1 226007000.000000 ns/op
BenchmarkReadOnly 1 238056000.000000 ns/op
BenchmarkReadOnly 1 247059000.000000 ns/op
BenchmarkReadOnly 1 240850000.000000 ns/op
BenchmarkReadOnly 1 246596000.000000 ns/op
BenchmarkReadOnly 1 233607000.000000 ns/op
BenchmarkReadOnly 1 249678000.000000 ns/op
BenchmarkReadOnly 1 238501000.000000 ns/op
BenchmarkReadOnly 1 240991000.000000 ns/op
BenchmarkReadOnly 1 228399000.000000 ns/op
BenchmarkReadOnly 1 241084000.000000 ns/op
BenchmarkReadOnly 1 254640000.000000 ns/op
BenchmarkReadOnly 1 240869000.000000 ns/op
BenchmarkReadOnly 1 241844000.000000 ns/op
BenchmarkReadOnly 1 248093000.000000 ns/op
BenchmarkReadOnly 1 253971000.000000 ns/op
BenchmarkReadOnly 1 262270000.000000 ns/op
BenchmarkReadOnly 1 249193000.000000 ns/op
BenchmarkReadOnly 1 231928000.000000 ns/op
BenchmarkReadWrite 1 488812000.000000 ns/op
BenchmarkReadWrite 1 434849000.000000 ns/op
BenchmarkReadWrite 1 432126000.000000 ns/op
BenchmarkReadWrite 1 425291000.000000 ns/op
BenchmarkReadWrite 1 405615000.000000 ns/op
BenchmarkReadWrite 1 436042000.000000 ns/op
BenchmarkReadWrite 1 416666000.000000 ns/op
BenchmarkReadWrite 1 430153000.000000 ns/op
BenchmarkReadWrite 1 415820000.000000 ns/op
BenchmarkReadWrite 1 419830000.000000 ns/op
BenchmarkReadWrite 1 390647000.000000 ns/op
BenchmarkReadWrite 1 390404000.000000 ns/op
BenchmarkReadWrite 1 410601000.000000 ns/op
BenchmarkReadWrite 1 405394000.000000 ns/op
BenchmarkReadWrite 1 410795000.000000 ns/op
BenchmarkReadWrite 1 400931000.000000 ns/op
BenchmarkReadWrite 1 399912000.000000 ns/op
BenchmarkReadWrite 1 437499000.000000 ns/op
BenchmarkReadWrite 1 415077000.000000 ns/op
BenchmarkReadWrite 1 411420000.000000 ns/op
BenchmarkReadWrite 1 405283000.000000 ns/op
BenchmarkReadWrite 1 418715000.000000 ns/op
BenchmarkReadWrite 1 417073000.000000 ns/op
BenchmarkReadWrite 1 408833000.000000 ns/op
BenchmarkReadWrite 1 423264000.000000 ns/op
BenchmarkReadWrite 1 430280000.000000 ns/op
BenchmarkReadWrite 1 437241000.000000 ns/op
BenchmarkReadWrite 1 443870000.000000 ns/op
BenchmarkReadWrite 1 407197000.000000 ns/op
BenchmarkReadWrite 1 431458000.000000 ns/op
BenchmarkReadWrite 1 437333000.000000 ns/op
BenchmarkReadWrite 1 430009000.000000 ns/op
BenchmarkReadWrite 1 418325000.000000 ns/op
BenchmarkReadWrite 1 418746000.000000 ns/op
BenchmarkReadWrite 1 433273000.000000 ns/op
BenchmarkReadWrite 1 412590000.000000 ns/op
BenchmarkReadWrite 1 418859000.000000 ns/op
BenchmarkReadWrite 1 523222000.000000 ns/op
BenchmarkReadWrite 1 442416000.000000 ns/op
BenchmarkReadWrite 1 464799000.000000 ns/op
BenchmarkReadWrite 1 468835000.000000 ns/op
BenchmarkReadWrite 1 470356000.000000 ns/op
BenchmarkReadWrite 1 473191000.000000 ns/op
BenchmarkReadWrite 1 458737000.000000 ns/op
BenchmarkReadWrite 1 432935000.000000 ns/op
BenchmarkReadWrite 1 521456000.000000 ns/op
BenchmarkReadWrite 1 400894000.000000 ns/op
BenchmarkReadWrite 1 419288000.000000 ns/op
BenchmarkReadWrite 1 435217000.000000 ns/op
BenchmarkReadWrite 1 402709000.000000 ns/op
BenchmarkCreateDestroyTable 1 15458064000.000000 ns/op
BenchmarkCreateDestroyTable 1 19712592000.000000 ns/op
BenchmarkCreateDestroyTable 1 21426023000.000000 ns/op
BenchmarkCreateDestroyTable 1 16616059000.000000 ns/op
BenchmarkCreateDestroyTable 1 14948396000.000000 ns/op
BenchmarkCreateDestroyTable 1 21142543000.000000 ns/op
BenchmarkCreateDestroyTable 1 15980174000.000000 ns/op
BenchmarkCreateDestroyTable 1 13957369000.000000 ns/op
BenchmarkCreateDestroyTable 1 18588601000.000000 ns/op
BenchmarkCreateDestroyTable 1 19625848000.000000 ns/op
BenchmarkCreateDestroyTable 1 25775554000.000000 ns/op
BenchmarkCreateDestroyTable 1 19180498000.000000 ns/op
BenchmarkCreateDestroyTable 1 13594725000.000000 ns/op
BenchmarkCreateDestroyTable 1 18607025000.000000 ns/op
BenchmarkCreateDestroyTable 1 22791366000.000000 ns/op
BenchmarkCreateDestroyTable 1 13566476000.000000 ns/op
BenchmarkCreateDestroyTable 1 13008494000.000000 ns/op
BenchmarkCreateDestroyTable 1 19827902000.000000 ns/op
BenchmarkCreateDestroyTable 1 24785195000.000000 ns/op
BenchmarkCreateDestroyTable 1 15256684000.000000 ns/op
BenchmarkCreateDestroyTable 1 14170215000.000000 ns/op
BenchmarkCreateDestroyTable 1 16537889000.000000 ns/op
BenchmarkCreateDestroyTable 1 19372541000.000000 ns/op
BenchmarkCreateDestroyTable 1 13290102000.000000 ns/op
BenchmarkCreateDestroyTable 1 17380186000.000000 ns/op
BenchmarkCreateDestroyTable 1 20793349000.000000 ns/op
BenchmarkCreateDestroyTable 1 17724957000.000000 ns/op
BenchmarkCreateDestroyTable 1 20517307000.000000 ns/op
BenchmarkCreateDestroyTable 1 15201736000.000000 ns/op
BenchmarkCreateDestroyTable 1 27465907000.000000 ns/op
BenchmarkCreateDestroyTable 1 17934990000.000000 ns/op
BenchmarkCreateDestroyTable 1 13161759000.000000 ns/op
BenchmarkCreateDestroyTable 1 16212682000.000000 ns/op
BenchmarkCreateDestroyTable 1 22891129000.000000 ns/op
BenchmarkCreateDestroyTable 1 24612101000.000000 ns/op
BenchmarkCreateDestroyTable 1 15711063000.000000 ns/op
BenchmarkCreateDestroyTable 1 19551218000.000000 ns/op
BenchmarkCreateDestroyTable 1 20114912000.000000 ns/op
BenchmarkCreateDestroyTable 1 15643448000.000000 ns/op
BenchmarkCreateDestroyTable 1 21989815000.000000 ns/op
BenchmarkCreateDestroyTable 1 20923043000.000000 ns/op
BenchmarkCreateDestroyTable 1 15872014000.000000 ns/op
BenchmarkCreateDestroyTable 1 28459104000.000000 ns/op
BenchmarkCreateDestroyTable 1 50115691000.000000 ns/op
BenchmarkCreateDestroyTable 1 13363223000.000000 ns/op
BenchmarkCreateDestroyTable 1 13536052000.000000 ns/op
BenchmarkCreateDestroyTable 1 15490998000.000000 ns/op
BenchmarkCreateDestroyTable 1 20936237000.000000 ns/op
BenchmarkCreateDestroyTable 1 29194814000.000000 ns/op
BenchmarkCreateDestroyTable 1 13402207000.000000 ns/op
BenchmarkInsert20Params 1 379687000.000000 ns/op
BenchmarkInsert20Params 1 334030000.000000 ns/op
BenchmarkInsert20Params 1 304189000.000000 ns/op
BenchmarkInsert20Params 1 299756000.000000 ns/op
BenchmarkInsert20Params 1 332157000.000000 ns/op
BenchmarkInsert20Params 1 348246000.000000 ns/op
BenchmarkInsert20Params 1 313639000.000000 ns/op
BenchmarkInsert20Params 1 302417000.000000 ns/op
BenchmarkInsert20Params 1 326729000.000000 ns/op
BenchmarkInsert20Params 1 299537000.000000 ns/op
BenchmarkInsert20Params 1 345811000.000000 ns/op
BenchmarkInsert20Params 1 307054000.000000 ns/op
BenchmarkInsert20Params 1 299443000.000000 ns/op
BenchmarkInsert20Params 1 307636000.000000 ns/op
BenchmarkInsert20Params 1 305157000.000000 ns/op
BenchmarkInsert20Params 1 351188000.000000 ns/op
BenchmarkInsert20Params 1 337290000.000000 ns/op
BenchmarkInsert20Params 1 317653000.000000 ns/op
BenchmarkInsert20Params 1 321212000.000000 ns/op
BenchmarkInsert20Params 1 311614000.000000 ns/op
BenchmarkInsert20Params 1 331909000.000000 ns/op
BenchmarkInsert20Params 1 327200000.000000 ns/op
BenchmarkInsert20Params 1 304285000.000000 ns/op
BenchmarkInsert20Params 1 325154000.000000 ns/op
BenchmarkInsert20Params 1 319374000.000000 ns/op
BenchmarkInsert20Params 1 331024000.000000 ns/op
BenchmarkInsert20Params 1 326256000.000000 ns/op
BenchmarkInsert20Params 1 312605000.000000 ns/op
BenchmarkInsert20Params 1 326373000.000000 ns/op
BenchmarkInsert20Params 1 317799000.000000 ns/op
BenchmarkInsert20Params 1 337183000.000000 ns/op
BenchmarkInsert20Params 1 304968000.000000 ns/op
BenchmarkInsert20Params 1 307780000.000000 ns/op
BenchmarkInsert20Params 1 352737000.000000 ns/op
BenchmarkInsert20Params 1 327912000.000000 ns/op
BenchmarkInsert20Params 1 336080000.000000 ns/op
BenchmarkInsert20Params 1 298799000.000000 ns/op
BenchmarkInsert20Params 1 322655000.000000 ns/op
BenchmarkInsert20Params 1 316596000.000000 ns/op
BenchmarkInsert20Params 1 334339000.000000 ns/op
BenchmarkInsert20Params 1 319295000.000000 ns/op
BenchmarkInsert20Params 1 303054000.000000 ns/op
BenchmarkInsert20Params 1 302662000.000000 ns/op
BenchmarkInsert20Params 1 328190000.000000 ns/op
BenchmarkInsert20Params 1 321365000.000000 ns/op
BenchmarkInsert20Params 1 331169000.000000 ns/op
BenchmarkInsert20Params 1 308283000.000000 ns/op
BenchmarkInsert20Params 1 331495000.000000 ns/op
BenchmarkInsert20Params 1 326271000.000000 ns/op
BenchmarkInsert20Params 1 312194000.000000 ns/op
BenchmarkInsert50Params 1 399235000.000000 ns/op
BenchmarkInsert50Params 1 356270000.000000 ns/op
BenchmarkInsert50Params 1 336673000.000000 ns/op
BenchmarkInsert50Params 1 332312000.000000 ns/op
BenchmarkInsert50Params 1 337741000.000000 ns/op
BenchmarkInsert50Params 1 313806000.000000 ns/op
BenchmarkInsert50Params 1 317273000.000000 ns/op
BenchmarkInsert50Params 1 315879000.000000 ns/op
BenchmarkInsert50Params 1 304071000.000000 ns/op
BenchmarkInsert50Params 1 315927000.000000 ns/op
BenchmarkInsert50Params 1 314556000.000000 ns/op
BenchmarkInsert50Params 1 323809000.000000 ns/op
BenchmarkInsert50Params 1 309695000.000000 ns/op
BenchmarkInsert50Params 1 312312000.000000 ns/op
BenchmarkInsert50Params 1 353058000.000000 ns/op
BenchmarkInsert50Params 1 318326000.000000 ns/op
BenchmarkInsert50Params 1 322307000.000000 ns/op
BenchmarkInsert50Params 1 317701000.000000 ns/op
BenchmarkInsert50Params 1 300740000.000000 ns/op
BenchmarkInsert50Params 1 310444000.000000 ns/op
BenchmarkInsert50Params 1 313566000.000000 ns/op
BenchmarkInsert50Params 1 334559000.000000 ns/op
BenchmarkInsert50Params 1 314965000.000000 ns/op
BenchmarkInsert50Params 1 324262000.000000 ns/op
BenchmarkInsert50Params 1 352546000.000000 ns/op
BenchmarkInsert50Params 1 320091000.000000 ns/op
BenchmarkInsert50Params 1 328962000.000000 ns/op
BenchmarkInsert50Params 1 328012000.000000 ns/op
BenchmarkInsert50Params 1 312517000.000000 ns/op
BenchmarkInsert50Params 1 296528000.000000 ns/op
BenchmarkInsert50Params 1 345956000.000000 ns/op
BenchmarkInsert50Params 1 305122000.000000 ns/op
BenchmarkInsert50Params 1 352218000.000000 ns/op
BenchmarkInsert50Params 1 313850000.000000 ns/op
BenchmarkInsert50Params 1 313628000.000000 ns/op
BenchmarkInsert50Params 1 331013000.000000 ns/op
BenchmarkInsert50Params 1 347325000.000000 ns/op
BenchmarkInsert50Params 1 301951000.000000 ns/op
BenchmarkInsert50Params 1 337868000.000000 ns/op
BenchmarkInsert50Params 1 316116000.000000 ns/op
BenchmarkInsert50Params 1 342154000.000000 ns/op
BenchmarkInsert50Params 1 312371000.000000 ns/op
BenchmarkInsert50Params 1 311631000.000000 ns/op
BenchmarkInsert50Params 1 334559000.000000 ns/op
BenchmarkInsert50Params 1 324927000.000000 ns/op
BenchmarkInsert50Params 1 329411000.000000 ns/op
BenchmarkInsert50Params 1 320686000.000000 ns/op
BenchmarkInsert50Params 1 305706000.000000 ns/op
BenchmarkInsert50Params 1 324480000.000000 ns/op
BenchmarkInsert50Params 1 324007000.000000 ns/op
BenchmarkInsert100Params 1 410883000.000000 ns/op
BenchmarkInsert100Params 1 342458000.000000 ns/op
BenchmarkInsert100Params 1 316281000.000000 ns/op
BenchmarkInsert100Params 1 326628000.000000 ns/op
BenchmarkInsert100Params 1 357426000.000000 ns/op
BenchmarkInsert100Params 1 312519000.000000 ns/op
BenchmarkInsert100Params 1 333114000.000000 ns/op
BenchmarkInsert100Params 1 311618000.000000 ns/op
BenchmarkInsert100Params 1 318594000.000000 ns/op
BenchmarkInsert100Params 1 339802000.000000 ns/op
BenchmarkInsert100Params 1 307806000.000000 ns/op
BenchmarkInsert100Params 1 318079000.000000 ns/op
BenchmarkInsert100Params 1 330027000.000000 ns/op
BenchmarkInsert100Params 1 316507000.000000 ns/op
BenchmarkInsert100Params 1 315483000.000000 ns/op
BenchmarkInsert100Params 1 324245000.000000 ns/op
BenchmarkInsert100Params 1 314948000.000000 ns/op
BenchmarkInsert100Params 1 336525000.000000 ns/op
BenchmarkInsert100Params 1 320117000.000000 ns/op
BenchmarkInsert100Params 1 327453000.000000 ns/op
BenchmarkInsert100Params 1 314015000.000000 ns/op
BenchmarkInsert100Params 1 313233000.000000 ns/op
BenchmarkInsert100Params 1 322951000.000000 ns/op
BenchmarkInsert100Params 1 326077000.000000 ns/op
BenchmarkInsert100Params 1 311004000.000000 ns/op
BenchmarkInsert100Params 1 323630000.000000 ns/op
BenchmarkInsert100Params 1 328425000.000000 ns/op
BenchmarkInsert100Params 1 320779000.000000 ns/op
BenchmarkInsert100Params 1 325562000.000000 ns/op
BenchmarkInsert100Params 1 316856000.000000 ns/op
BenchmarkInsert100Params 1 317435000.000000 ns/op
BenchmarkInsert100Params 1 303728000.000000 ns/op
BenchmarkInsert100Params 1 327482000.000000 ns/op
BenchmarkInsert100Params 1 334673000.000000 ns/op
BenchmarkInsert100Params 1 334816000.000000 ns/op
BenchmarkInsert100Params 1 307945000.000000 ns/op
BenchmarkInsert100Params 1 318361000.000000 ns/op
BenchmarkInsert100Params 1 317126000.000000 ns/op
BenchmarkInsert100Params 1 326571000.000000 ns/op
BenchmarkInsert100Params 1 313557000.000000 ns/op
BenchmarkInsert100Params 1 319436000.000000 ns/op
BenchmarkInsert100Params 1 328432000.000000 ns/op
BenchmarkInsert100Params 1 321917000.000000 ns/op
BenchmarkInsert100Params 1 337834000.000000 ns/op
BenchmarkInsert100Params 1 330862000.000000 ns/op
BenchmarkInsert100Params 1 325535000.000000 ns/op
BenchmarkInsert100Params 1 318228000.000000 ns/op
BenchmarkInsert100Params 1 303372000.000000 ns/op
BenchmarkInsert100Params 1 317036000.000000 ns/op
BenchmarkInsert100Params 1 322005000.000000 ns/op
BenchmarkReadOnly 1 226002000.000000 ns/op
BenchmarkReadOnly 1 163465000.000000 ns/op
BenchmarkReadOnly 1 160412000.000000 ns/op
BenchmarkReadOnly 1 161485000.000000 ns/op
BenchmarkReadOnly 1 154878000.000000 ns/op
BenchmarkReadOnly 1 165332000.000000 ns/op
BenchmarkReadOnly 1 151526000.000000 ns/op
BenchmarkReadOnly 1 175746000.000000 ns/op
BenchmarkReadOnly 1 152201000.000000 ns/op
BenchmarkReadOnly 1 164244000.000000 ns/op
BenchmarkReadOnly 1 153267000.000000 ns/op
BenchmarkReadOnly 1 170339000.000000 ns/op
BenchmarkReadOnly 1 151320000.000000 ns/op
BenchmarkReadOnly 1 158958000.000000 ns/op
BenchmarkReadOnly 1 159864000.000000 ns/op
BenchmarkReadOnly 1 175384000.000000 ns/op
BenchmarkReadOnly 1 157621000.000000 ns/op
BenchmarkReadOnly 1 159782000.000000 ns/op
BenchmarkReadOnly 1 150248000.000000 ns/op
BenchmarkReadOnly 1 155316000.000000 ns/op
BenchmarkReadOnly 1 157940000.000000 ns/op
BenchmarkReadOnly 1 167969000.000000 ns/op
BenchmarkReadOnly 1 151836000.000000 ns/op
BenchmarkReadOnly 1 162302000.000000 ns/op
BenchmarkReadOnly 1 162429000.000000 ns/op
BenchmarkReadOnly 1 152880000.000000 ns/op
BenchmarkReadOnly 1 154934000.000000 ns/op
BenchmarkReadOnly 1 170546000.000000 ns/op
BenchmarkReadOnly 1 175196000.000000 ns/op
BenchmarkReadOnly 1 155274000.000000 ns/op
BenchmarkReadOnly 1 155923000.000000 ns/op
BenchmarkReadOnly 1 148132000.000000 ns/op
BenchmarkReadOnly 1 148190000.000000 ns/op
BenchmarkReadOnly 1 149835000.000000 ns/op
BenchmarkReadOnly 1 165043000.000000 ns/op
BenchmarkReadOnly 1 166871000.000000 ns/op
BenchmarkReadOnly 1 172583000.000000 ns/op
BenchmarkReadOnly 1 158776000.000000 ns/op
BenchmarkReadOnly 1 166446000.000000 ns/op
BenchmarkReadOnly 1 143821000.000000 ns/op
BenchmarkReadOnly 1 150387000.000000 ns/op
BenchmarkReadOnly 1 167298000.000000 ns/op
BenchmarkReadOnly 1 154068000.000000 ns/op
BenchmarkReadOnly 1 152204000.000000 ns/op
BenchmarkReadOnly 1 164849000.000000 ns/op
BenchmarkReadOnly 1 172337000.000000 ns/op
BenchmarkReadOnly 1 191639000.000000 ns/op
BenchmarkReadOnly 1 146347000.000000 ns/op
BenchmarkReadOnly 1 158151000.000000 ns/op
BenchmarkReadOnly 1 157075000.000000 ns/op
BenchmarkReadWrite 1 368254000.000000 ns/op
BenchmarkReadWrite 1 277476000.000000 ns/op
BenchmarkReadWrite 1 262888000.000000 ns/op
BenchmarkReadWrite 1 253147000.000000 ns/op
BenchmarkReadWrite 1 296953000.000000 ns/op
BenchmarkReadWrite 1 267307000.000000 ns/op
BenchmarkReadWrite 1 252988000.000000 ns/op
BenchmarkReadWrite 1 259993000.000000 ns/op
BenchmarkReadWrite 1 262063000.000000 ns/op
BenchmarkReadWrite 1 293269000.000000 ns/op
BenchmarkReadWrite 1 255662000.000000 ns/op
BenchmarkReadWrite 1 239795000.000000 ns/op
BenchmarkReadWrite 1 240515000.000000 ns/op
BenchmarkReadWrite 1 287347000.000000 ns/op
BenchmarkReadWrite 1 291357000.000000 ns/op
BenchmarkReadWrite 1 256277000.000000 ns/op
BenchmarkReadWrite 1 248986000.000000 ns/op
BenchmarkReadWrite 1 263127000.000000 ns/op
BenchmarkReadWrite 1 248587000.000000 ns/op
BenchmarkReadWrite 1 237469000.000000 ns/op
BenchmarkReadWrite 1 259602000.000000 ns/op
BenchmarkReadWrite 1 239341000.000000 ns/op
BenchmarkReadWrite 1 254261000.000000 ns/op
BenchmarkReadWrite 1 268970000.000000 ns/op
BenchmarkReadWrite 1 242838000.000000 ns/op
BenchmarkReadWrite 1 245744000.000000 ns/op
BenchmarkReadWrite 1 270193000.000000 ns/op
BenchmarkReadWrite 1 247239000.000000 ns/op
BenchmarkReadWrite 1 242645000.000000 ns/op
BenchmarkReadWrite 1 258087000.000000 ns/op
BenchmarkReadWrite 1 281114000.000000 ns/op
BenchmarkReadWrite 1 248275000.000000 ns/op
BenchmarkReadWrite 1 287402000.000000 ns/op
BenchmarkReadWrite 1 266654000.000000 ns/op
BenchmarkReadWrite 1 271231000.000000 ns/op
BenchmarkReadWrite 1 245690000.000000 ns/op
BenchmarkReadWrite 1 237905000.000000 ns/op
BenchmarkReadWrite 1 261361000.000000 ns/op
BenchmarkReadWrite 1 264276000.000000 ns/op
BenchmarkReadWrite 1 233763000.000000 ns/op
BenchmarkReadWrite 1 239330000.000000 ns/op
BenchmarkReadWrite 1 271485000.000000 ns/op
BenchmarkReadWrite 1 257605000.000000 ns/op
BenchmarkReadWrite 1 271873000.000000 ns/op
BenchmarkReadWrite 1 233831000.000000 ns/op
BenchmarkReadWrite 1 231367000.000000 ns/op
BenchmarkReadWrite 1 256567000.000000 ns/op
BenchmarkReadWrite 1 242574000.000000 ns/op
BenchmarkReadWrite 1 241827000.000000 ns/op
BenchmarkReadWrite 1 228835000.000000 ns/op
BenchmarkCreateDestroyTable 1 47123593000.000000 ns/op
BenchmarkCreateDestroyTable 1 46640302000.000000 ns/op
BenchmarkCreateDestroyTable 1 50721837000.000000 ns/op
BenchmarkCreateDestroyTable 1 40052993000.000000 ns/op
BenchmarkCreateDestroyTable 1 49273264000.000000 ns/op
BenchmarkCreateDestroyTable 1 50998366000.000000 ns/op
BenchmarkCreateDestroyTable 1 66122903000.000000 ns/op
BenchmarkCreateDestroyTable 1 38949265000.000000 ns/op
BenchmarkCreateDestroyTable 1 44379130000.000000 ns/op
BenchmarkCreateDestroyTable 1 51075922000.000000 ns/op
BenchmarkCreateDestroyTable 1 39849133000.000000 ns/op
BenchmarkCreateDestroyTable 1 47548510000.000000 ns/op
BenchmarkCreateDestroyTable 1 43189623000.000000 ns/op
BenchmarkCreateDestroyTable 1 52167114000.000000 ns/op
BenchmarkCreateDestroyTable 1 60629064000.000000 ns/op
BenchmarkCreateDestroyTable 1 56347779000.000000 ns/op
BenchmarkCreateDestroyTable 1 38718744000.000000 ns/op
BenchmarkCreateDestroyTable 1 45033325000.000000 ns/op
BenchmarkCreateDestroyTable 1 41881219000.000000 ns/op
BenchmarkCreateDestroyTable 1 46846910000.000000 ns/op
BenchmarkCreateDestroyTable 1 36063981000.000000 ns/op
BenchmarkCreateDestroyTable 1 56391338000.000000 ns/op
BenchmarkCreateDestroyTable 1 41253835000.000000 ns/op
BenchmarkCreateDestroyTable 1 38923804000.000000 ns/op
BenchmarkCreateDestroyTable 1 47152682000.000000 ns/op
BenchmarkCreateDestroyTable 1 47340701000.000000 ns/op
BenchmarkCreateDestroyTable 1 39045745000.000000 ns/op
BenchmarkCreateDestroyTable 1 63192444000.000000 ns/op
BenchmarkCreateDestroyTable 1 34783784000.000000 ns/op
BenchmarkCreateDestroyTable 1 44992449000.000000 ns/op
BenchmarkCreateDestroyTable 1 42164953000.000000 ns/op
BenchmarkCreateDestroyTable 1 55834507000.000000 ns/op
BenchmarkCreateDestroyTable 1 52796055000.000000 ns/op
BenchmarkCreateDestroyTable 1 36768477000.000000 ns/op
BenchmarkCreateDestroyTable 1 63439682000.000000 ns/op
BenchmarkCreateDestroyTable 1 44578472000.000000 ns/op
BenchmarkCreateDestroyTable 1 52213960000.000000 ns/op
BenchmarkCreateDestroyTable 1 60962612000.000000 ns/op
BenchmarkCreateDestroyTable 1 55771469000.000000 ns/op
BenchmarkCreateDestroyTable 1 44814832000.000000 ns/op
BenchmarkCreateDestroyTable 1 34912659000.000000 ns/op
BenchmarkCreateDestroyTable 1 46571707000.000000 ns/op
BenchmarkCreateDestroyTable 1 38092202000.000000 ns/op
BenchmarkCreateDestroyTable 1 57864719000.000000 ns/op
BenchmarkCreateDestroyTable 1 42587004000.000000 ns/op
BenchmarkCreateDestroyTable 1 51398118000.000000 ns/op
BenchmarkCreateDestroyTable 1 42045203000.000000 ns/op
BenchmarkCreateDestroyTable 1 37418082000.000000 ns/op
BenchmarkCreateDestroyTable 1 44655450000.000000 ns/op
BenchmarkCreateDestroyTable 1 58822085000.000000 ns/op
BenchmarkInsert20Params 1 686381000.000000 ns/op
BenchmarkInsert20Params 1 275872000.000000 ns/op
BenchmarkInsert20Params 1 258107000.000000 ns/op
BenchmarkInsert20Params 1 273632000.000000 ns/op
BenchmarkInsert20Params 1 263417000.000000 ns/op
BenchmarkInsert20Params 1 242688000.000000 ns/op
BenchmarkInsert20Params 1 250883000.000000 ns/op
BenchmarkInsert20Params 1 277867000.000000 ns/op
BenchmarkInsert20Params 1 289277000.000000 ns/op
BenchmarkInsert20Params 1 263795000.000000 ns/op
BenchmarkInsert20Params 1 274004000.000000 ns/op
BenchmarkInsert20Params 1 284434000.000000 ns/op
BenchmarkInsert20Params 1 263981000.000000 ns/op
BenchmarkInsert20Params 1 244726000.000000 ns/op
BenchmarkInsert20Params 1 245950000.000000 ns/op
BenchmarkInsert20Params 1 286394000.000000 ns/op
BenchmarkInsert20Params 1 259290000.000000 ns/op
BenchmarkInsert20Params 1 272847000.000000 ns/op
BenchmarkInsert20Params 1 275268000.000000 ns/op
BenchmarkInsert20Params 1 309044000.000000 ns/op
BenchmarkInsert20Params 1 280348000.000000 ns/op
BenchmarkInsert20Params 1 257470000.000000 ns/op
BenchmarkInsert20Params 1 255427000.000000 ns/op
BenchmarkInsert20Params 1 258443000.000000 ns/op
BenchmarkInsert20Params 1 266427000.000000 ns/op
BenchmarkInsert20Params 1 270781000.000000 ns/op
BenchmarkInsert20Params 1 258484000.000000 ns/op
BenchmarkInsert20Params 1 252875000.000000 ns/op
BenchmarkInsert20Params 1 280629000.000000 ns/op
BenchmarkInsert20Params 1 270718000.000000 ns/op
BenchmarkInsert20Params 1 272320000.000000 ns/op
BenchmarkInsert20Params 1 262860000.000000 ns/op
BenchmarkInsert20Params 1 261184000.000000 ns/op
BenchmarkInsert20Params 1 276486000.000000 ns/op
BenchmarkInsert20Params 1 263260000.000000 ns/op
BenchmarkInsert20Params 1 256484000.000000 ns/op
BenchmarkInsert20Params 1 273298000.000000 ns/op
BenchmarkInsert20Params 1 336884000.000000 ns/op
BenchmarkInsert20Params 1 252551000.000000 ns/op
BenchmarkInsert20Params 1 277063000.000000 ns/op
BenchmarkInsert20Params 1 268701000.000000 ns/op
BenchmarkInsert20Params 1 258135000.000000 ns/op
BenchmarkInsert20Params 1 278642000.000000 ns/op
BenchmarkInsert20Params 1 262928000.000000 ns/op
BenchmarkInsert20Params 1 310671000.000000 ns/op
BenchmarkInsert20Params 1 272128000.000000 ns/op
BenchmarkInsert20Params 1 287905000.000000 ns/op
BenchmarkInsert20Params 1 280947000.000000 ns/op
BenchmarkInsert20Params 1 273320000.000000 ns/op
BenchmarkInsert20Params 1 261565000.000000 ns/op
BenchmarkInsert50Params 1 395056000.000000 ns/op
BenchmarkInsert50Params 1 300406000.000000 ns/op
BenchmarkInsert50Params 1 257694000.000000 ns/op
BenchmarkInsert50Params 1 258808000.000000 ns/op
BenchmarkInsert50Params 1 277809000.000000 ns/op
BenchmarkInsert50Params 1 272328000.000000 ns/op
BenchmarkInsert50Params 1 261341000.000000 ns/op
BenchmarkInsert50Params 1 309665000.000000 ns/op
BenchmarkInsert50Params 1 280015000.000000 ns/op
BenchmarkInsert50Params 1 269662000.000000 ns/op
BenchmarkInsert50Params 1 283224000.000000 ns/op
BenchmarkInsert50Params 1 304276000.000000 ns/op
BenchmarkInsert50Params 1 265811000.000000 ns/op
BenchmarkInsert50Params 1 267223000.000000 ns/op
BenchmarkInsert50Params 1 265541000.000000 ns/op
BenchmarkInsert50Params 1 274037000.000000 ns/op
BenchmarkInsert50Params 1 264356000.000000 ns/op
BenchmarkInsert50Params 1 277379000.000000 ns/op
BenchmarkInsert50Params 1 870831000.000000 ns/op
BenchmarkInsert50Params 1 606949000.000000 ns/op
BenchmarkInsert50Params 1 565196000.000000 ns/op
BenchmarkInsert50Params 1 474763000.000000 ns/op
BenchmarkInsert50Params 1 500091000.000000 ns/op
BenchmarkInsert50Params 1 498926000.000000 ns/op
BenchmarkInsert50Params 1 491250000.000000 ns/op
BenchmarkInsert50Params 1 498587000.000000 ns/op
BenchmarkInsert50Params 1 495585000.000000 ns/op
BenchmarkInsert50Params 1 521567000.000000 ns/op
BenchmarkInsert50Params 1 273099000.000000 ns/op
BenchmarkInsert50Params 1 504881000.000000 ns/op
BenchmarkInsert50Params 1 499453000.000000 ns/op
BenchmarkInsert50Params 1 531795000.000000 ns/op
BenchmarkInsert50Params 1 331664000.000000 ns/op
BenchmarkInsert50Params 1 479796000.000000 ns/op
BenchmarkInsert50Params 1 272680000.000000 ns/op
BenchmarkInsert50Params 1 442236000.000000 ns/op
BenchmarkInsert50Params 1 474118000.000000 ns/op
BenchmarkInsert50Params 1 377382000.000000 ns/op
BenchmarkInsert50Params 1 289506000.000000 ns/op
BenchmarkInsert50Params 1 539091000.000000 ns/op
BenchmarkInsert50Params 1 363609000.000000 ns/op
BenchmarkInsert50Params 1 474242000.000000 ns/op
BenchmarkInsert50Params 1 361972000.000000 ns/op
BenchmarkInsert50Params 1 304732000.000000 ns/op
BenchmarkInsert50Params 1 317171000.000000 ns/op
BenchmarkInsert50Params 1 267780000.000000 ns/op
BenchmarkInsert50Params 1 256731000.000000 ns/op
BenchmarkInsert50Params 1 266160000.000000 ns/op
BenchmarkInsert50Params 1 254127000.000000 ns/op
BenchmarkInsert50Params 1 252046000.000000 ns/op
BenchmarkInsert100Params 1 373410000.000000 ns/op
BenchmarkInsert100Params 1 282319000.000000 ns/op
BenchmarkInsert100Params 1 250657000.000000 ns/op
BenchmarkInsert100Params 1 259237000.000000 ns/op
BenchmarkInsert100Params 1 253836000.000000 ns/op
BenchmarkInsert100Params 1 282545000.000000 ns/op
BenchmarkInsert100Params 1 255127000.000000 ns/op
BenchmarkInsert100Params 1 266018000.000000 ns/op
BenchmarkInsert100Params 1 265906000.000000 ns/op
BenchmarkInsert100Params 1 255976000.000000 ns/op
BenchmarkInsert100Params 1 277035000.000000 ns/op
BenchmarkInsert100Params 1 270935000.000000 ns/op
BenchmarkInsert100Params 1 261208000.000000 ns/op
BenchmarkInsert100Params 1 270941000.000000 ns/op
BenchmarkInsert100Params 1 256850000.000000 ns/op
BenchmarkInsert100Params 1 257735000.000000 ns/op
BenchmarkInsert100Params 1 274825000.000000 ns/op
BenchmarkInsert100Params 1 247607000.000000 ns/op
BenchmarkInsert100Params 1 253651000.000000 ns/op
BenchmarkInsert100Params 1 259328000.000000 ns/op
BenchmarkInsert100Params 1 260711000.000000 ns/op
BenchmarkInsert100Params 1 262944000.000000 ns/op
BenchmarkInsert100Params 1 261493000.000000 ns/op
BenchmarkInsert100Params 1 269912000.000000 ns/op
BenchmarkInsert100Params 1 270153000.000000 ns/op
BenchmarkInsert100Params 1 263903000.000000 ns/op
BenchmarkInsert100Params 1 282254000.000000 ns/op
BenchmarkInsert100Params 1 268339000.000000 ns/op
BenchmarkInsert100Params 1 276681000.000000 ns/op
BenchmarkInsert100Params 1 266601000.000000 ns/op
BenchmarkInsert100Params 1 265431000.000000 ns/op
BenchmarkInsert100Params 1 282494000.000000 ns/op
BenchmarkInsert100Params 1 279939000.000000 ns/op
BenchmarkInsert100Params 1 268513000.000000 ns/op
BenchmarkInsert100Params 1 274042000.000000 ns/op
BenchmarkInsert100Params 1 246154000.000000 ns/op
BenchmarkInsert100Params 1 265830000.000000 ns/op
BenchmarkInsert100Params 1 268392000.000000 ns/op
BenchmarkInsert100Params 1 270540000.000000 ns/op
BenchmarkInsert100Params 1 289275000.000000 ns/op
BenchmarkInsert100Params 1 283789000.000000 ns/op
BenchmarkInsert100Params 1 251004000.000000 ns/op
BenchmarkInsert100Params 1 275493000.000000 ns/op
BenchmarkInsert100Params 1 276560000.000000 ns/op
BenchmarkInsert100Params 1 242359000.000000 ns/op
BenchmarkInsert100Params 1 267904000.000000 ns/op
BenchmarkInsert100Params 1 272750000.000000 ns/op
BenchmarkInsert100Params 1 293561000.000000 ns/op
BenchmarkInsert100Params 1 262633000.000000 ns/op
BenchmarkInsert100Params 1 245660000.000000 ns/op
$ time python3 benchmark.py && benchstat bench_v1.txt bench_dbapi.txt 

real	59m13.132s
user	0m11.019s
sys	0m2.865s
name                old time/op  new time/op  delta
ReadOnly             159ms ±10%   239ms ±10%  +50.16%  (p=0.000 n=48+49)
ReadWrite            257ms ±16%   424ms ±11%  +65.12%  (p=0.000 n=49+47)
CreateDestroyTable   47.4s ±39%   18.5s ±58%  -61.03%  (p=0.000 n=50+49)
Insert20Params       267ms ± 9%   321ms ±10%  +19.96%  (p=0.000 n=46+49)
Insert50Params       365ms ±66%   323ms ±10%     ~     (p=0.482 n=49+49)
Insert100Params      267ms ±10%   322ms ± 6%  +20.63%  (p=0.000 n=49+48)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment