whoopsy. I was testing dict over storage performances, i.e. choosing to NOT
use storage alltogether.
If you wanted a comparison between getting values out of a storage with
"dot notation" and "dict notation" the test should be different.
Updated results (different machine)
set storage takes 4.03858570014
set dict takes 1.54960379043
get storage takes 10.6617240459
get dict takes 1.52191221231
get storage with dict notation takes 3.38868745888
updated code
from gluon.storage import Storage
def set_storage():
st = Storage()
st.test1 = 'test1'
st.test2 = 'test2'
st.test3 = 'test3'
st.test4 = 'test4'
st.test5 = 'test5'
st.test6 = 'test6'
st.test7 = 'test7'
st.test8 = 'test9'
st.test9 = 'test9'
st.test10 = 'test10'
return st
def set_dict():
st = dict()
st['test1'] = 'test1'
st['test2'] = 'test2'
st['test3'] = 'test3'
st['test4'] = 'test4'
st['test5'] = 'test5'
st['test6'] = 'test6'
st['test7'] = 'test7'
st['test8'] = 'test8'
st['test9'] = 'test9'
st['test10'] = 'test10'
return st
def get_storage(st):
return st.test1 + st.test2 + st.test3 + st.test4 + st.test5 +\
st.test6 + st.test7 + st.test8 + st.test9 + st.test10 ==
'test1test2test3test4test5test6test7test9test9test10'
def get_dict(st):
return st['test1'] + st['test2'] + st['test3'] + st['test4'] + st[
'test5'] +\
st['test6'] + st['test7'] + st['test8'] + st['test9'] + st['test10'] ==
'test1test2test3test4test5test6test7test8test9test10'
def get_storage_parenthesis(st):
return st['test1'] + st['test2'] + st['test3'] + st['test4'] + st[
'test5'] +\
st['test6'] + st['test7'] + st['test8'] + st['test9'] + st['test10'] ==
'test1test2test3test4test5test6test7test8test9test10'
if __name__ == '__main__':
from timeit import Timer
t0 = Timer(setup='from __main__ import set_storage',
stmt='set_storage()')
t1 = Timer(setup='from __main__ import set_dict',
stmt='set_dict()')
t2 = Timer(setup="from __main__ import set_storage, get_storage; st =
set_storage()", stmt="get_storage(st)")
t3 = Timer(setup="from __main__ import set_dict, get_dict; st =
set_dict()", stmt="get_dict(st)")
t4 = Timer(setup="from __main__ import set_storage,
get_storage_parenthesis; st = set_storage()", stmt=
"get_storage_parenthesis(st)")
print 'set storage takes ', t0.timeit(number=1000000)
print 'set dict takes', t1.timeit(number=1000000)
print 'get storage takes', t2.timeit(number=1000000)
print 'get dict takes', t3.timeit(number=1000000)
print 'get storage with dict notation takes' , t4.timeit(number=1000000)
--