[pygr-notify] [pygr commit] r123 - contrib/benchmark
codesite-noreply at google.com
codesite-noreply at google.com
Wed Jan 7 06:26:05 PST 2009
Author: istvan.albert
Date: Wed Jan 7 06:25:51 2009
New Revision: 123
Added:
contrib/benchmark/metakit_dict.py
Modified:
contrib/benchmark/bench.py
Log:
added metakit based storage
Modified: contrib/benchmark/bench.py
==============================================================================
--- contrib/benchmark/bench.py (original)
+++ contrib/benchmark/bench.py Wed Jan 7 06:25:51 2009
@@ -3,9 +3,10 @@
import sq_dict
import sq_dict2
import dbm_dict
+import metakit_dict
# number of elements
-ELEM_NUM = 10**7
+ELEM_NUM = 10**5
# data size
DATA_SIZE = 100
@@ -94,15 +95,16 @@
#
import cdb_dict
#
+ funcm = metakit_dict.metakit_open
func0 = cdb_dict.cdb_open
-
+
func1 = bsddb.btopen
func2 = bsddb.hashopen
func3 = sq_dict.sq_dict_open
func4 = sq_dict2.sq_dict2_open
func5 = dbm_dict.dbm_open
- funcs = [ func0, func1, func2, func3, func4, func5 ]
+ funcs = [ funcm, func0, func1, func2, func3, func4, func5 ]
tests = [ loading, indexing, forward_iter, reverse_iter, update]
print
Added: contrib/benchmark/metakit_dict.py
==============================================================================
--- (empty file)
+++ contrib/benchmark/metakit_dict.py Wed Jan 7 06:25:51 2009
@@ -0,0 +1,45 @@
+# metakit based dictionary
+
+import metakit
+
+def metakit_open(filename, mode='c'):
+ db = MetakitShelve(filename, mode=mode)
+ return db
+
+class MetakitShelve( object ):
+
+ def __init__ (self, filename, mode):
+ self.db = metakit.storage( filename, 1)
+ view = self.db.getas("data[key:S,value:S]")
+ hashvw = self.db.getas("__test_hash__[_H:I,_R:I]")
+ self.view = view.hash(hashvw, 1)
+
+ def create_index(self):
+ pass
+
+ def sync(self):
+ self.db.commit()
+
+ def close(self):
+ pass
+
+ def __setitem__(self, key, value):
+ self.view.append( (key, value))
+
+ def __getitem__(self, key):
+ return self.view.select(key=key)[0].value
+
+ def __iter__(self):
+ return iter( self.keys() )
+
+ def keys(self):
+ return [r.key for r in self.view]
+
+if __name__ == '__main__':
+ db = MetakitShelve('test.db', mode='c')
+ for i in range(1000):
+ db['1'] = '2'
+
+ print db['1']
+ for key in db:
+ print key
More information about the pygr-notify
mailing list