All pastes #436305 Raw Edit

Stuff

public python v1 · immutable
·published 2007-04-12 12:48 UTC
rendered paste body
from bsddb import dbfrom random import randomimport time# this is the counter valuedef getNodeID(key, data):    return str(data[0])env = db.DBEnv()flags = db.DB_CREATE | db.DB_INIT_MPOOL | db.DB_INIT_LOCK | db.DB_INIT_LOG | db.DB_INIT_TXNenv.open("/tmp/tmpflum/", flags)dbp = db.DB(env)dbp.open("primary.db", None, db.DB_HASH, db.DB_CREATE | db.DB_AUTO_COMMIT)dbs = db.DB(env)dbs.open("secondary.db", None, db.DB_RECNO, db.DB_CREATE | db.DB_AUTO_COMMIT)def insert(key):    # check if the key is available,    global counter    t = env.txn_begin()    try:        t_val = dbp.get(key, txn=t)        # the key is not found, register a new value for it        if t_val is None:            counter = "%s" % dbs.append(key, t)            dbp.put(key, counter, txn=t)        t.commit(0)            except Exception, e:        print e        t.abort()def get(key):    t = env.txn_begin()    try:        val = dbp.get(key, txn=t)        t.commit(0)        return val    except Exception, e:        print e        t.abort()t_start = t_delta = time.time()num_inserts = 1000samples = []num_samples = 100for i in range(0,num_inserts):    r = str(random())    if i % (num_inserts/num_samples) == 0:        t = time.time()-t_delta        print "registering sample: %s, %s" % (i,t)        samples.append((r,t))        t_delta = time.time()    insert(r)print "%s inserts took %s" % (num_inserts, time.time()-t_start)t_start = time.time()[get(k) for (k,t) in samples]print "%s gets took %s" % (num_samples, time.time()-t_start)insert("hello")combine = zip(range(0, num_inserts, num_inserts/num_samples),[t for (k,t) in samples])f = file('out.csv', 'w')f.write('samples, time\n')f.write("\n".join([str(s) + ", " + str(t) for s,t in combine]))f.close()        dbs.close()dbp.close()env.close()