Tesing code for HamsterDB, python bind.
Big file may slow down HamsterDB.(QPS 70 around 5,000,000 kvs)
So test_write_en() / test_read_en() use pre-hash (mmh3).(QPS 300K around 5,000,000 kvs) That is not true, I made a mistake in my code and QPS is still around 70 with 5,000,000 kvs (even after the hash and split).
mmh3 can be installed from pypi
''' Created on 2011-8-24 @author: liheyuan ''' import hamsterdb, os, time, random, mmh3 def test_write_en(): LOOP = 5000000 M = 10 dbs = [hamsterdb.db() for i in xrange(M)] for i in xrange(M): dbs[i].create(str(i) + ".db") start = time.time() for i in xrange(LOOP): key = str(i) j = abs(mmh3.hash(key)) % M dbs[j].insert(key, os.urandom(512)) #close all db for i in xrange(M): dbs[i].close() end = time.time() print "QPS:", LOOP / (end - start) def test_read_en(): LOOP = 5000 M = 10 pop = range(5000000) keys = random.sample(pop, LOOP) dbs = [hamsterdb.db() for i in xrange(M)] for i in xrange(M): dbs[i].open(str(i) + ".db") start = time.time() for key in keys: key = str(key) j = abs(mmh3.hash(key)) % M dbs[j].find(str(key)) end = time.time() #close all db for i in xrange(M): dbs[i].close() print "QPS:", LOOP / (end - start) def test_write(): LOOP = 1000000 start = time.time() db = hamsterdb.db() db.create("test.db") for i in xrange(LOOP): db.insert(str(i), os.urandom(512)) db.close() end = time.time() print "QPS:", LOOP / (end - start) def test_read(): LOOP = 5000 pop = range(1000000) keys = random.sample(pop, LOOP) start = time.time() db = hamsterdb.db() db.open("test.db") for key in keys: db.find(str(key)) db.close() end = time.time() print "QPS:", LOOP / (end - start) if __name__ == "__main__": #test_write_en() test_read_en() #test_write() #test_read()