Abandoned <[EMAIL PROTECTED]> writes:

> 173.000 dict elements and it tooks 2.2 seconds this very big time
> for my project

If you're generating the string from Python, use cPickle instead.
Much faster:

>>> import time
>>> d = dict((i, i+1) for i in xrange(170000))
>>> len(d)
170000
>>> s=repr(d)
>>> t0 = time.time(); d2 = eval(s); t1 = time.time()
>>> t1-t0
1.5457899570465088
>>> import cPickle as pickle
>>> s = pickle.dumps(d, -1)
>>> len(s)
1437693
>>> t0 = time.time(); d2 = pickle.loads(s); t1 = time.time()
>>> t1-t0
0.060307979583740234
>>> len(d2)
170000

That is 25x speedup.  Note that cPickle's format is binary.  Using the
textual format makes for more readable pickles, but reduces the
speedup to "only" 9.5x on my machine.


P.S.
Before someone says that using pickle is unsafe, remember that he is
considering *eval* as the alternative.  :-)
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to