Ticket #9964: bench.py

File bench.py, 2.1 KB (added by shai, 6 years ago)

rudimentary benchmarking code

Line 
1from psycopg2 import connect as _pg
2from sqlite3 import connect as _lite
3from MySQLdb import connect as _mysql
4
5def mysql():
6    con = _mysql()
7    con.select_db('shai')
8    return con
9
10def sqlite():
11    return _lite('sqlite.db')
12
13def pg():
14    return _pg("")
15
16def prepare(connection):
17    cursor = connection.cursor()
18    cursor.execute("""create table test(
19                            testid int primary key,
20                            test2 char(10) not null,
21                            test3 varchar(50) not null
22                            )""")
23def fill_up(connection):
24    cursor = connection.cursor()
25    cursor.execute("delete from test where 1=1")
26    s = '0123456789'
27    t = 'abc'
28    for i in range(100000):
29        stmt = "insert into test values(%d, '%s', '%s')" % \
30                (i, s, t)
31        cursor.execute(stmt)
32        s = s[-1:]+s[:-1] # rotate
33        t = (t+ 'x'+ str(i))[-49:]
34    connection.commit()
35
36def warm_up(connection):
37    cursor = connection.cursor()
38    for i in range(1, 100000, 1017):
39        cursor.execute("select * from test where testid=%d" % (i,))
40        cursor.fetchall()
41    connection.rollback()
42    for i in range(1, 100000, 1017):
43        cursor.execute("select * from test where testid=%d" % (i,))
44        cursor.fetchall()
45    connection.commit()
46   
47def bench(connection, end_tran):
48    cursor = connection.cursor()
49    for i in range(7, 99990, 69):
50        cursor.execute("select * from test where testid=%d" % (i,))
51        cursor.fetchall()
52        cursor.execute("select * from test where testid=%d" % (i+1,))
53        cursor.fetchall()
54        cursor.execute("select * from test where testid=%d" % (i+6,))
55        cursor.fetchall()
56        end_tran()
57
58def leave_open(connection):
59    def noop(): pass
60    bench(connection,  noop)
61
62def commit(connection):
63    bench(connection,  connection.commit)
64
65def rollback(connection):
66    bench(connection,  connection.rollback)
67   
68if __name__=='__main__':
69    fill_up(mysql())
70    fill_up(sqlite())
71    fill_up(pg())
72    print "styles:"
73    print "pg", _pg.__module__.paramstyle
74    print "mysql", _mysql.__module__.paramstyle
75    print "sqlite", _lite.__module__.paramstyle
76
77
78   
Back to Top