Hrvoje Niksic <[EMAIL PROTECTED]> writes: > If you're generating the string from Python, use cPickle instead. > Much faster: [...] >>>> t0 = time.time(); d2 = eval(s); t1 = time.time(); t1-t0 > 1.5457899570465088 >>>> t0 = time.time(); d2 = pickle.loads(s); t1 = time.time(); t1-t0 > 0.060307979583740234
It just occurred to me, for simple data structures like the ones we're discussing here (dicts of ints), marshal should also be considered. marshal is the module used for generating and loading .pyc files and, while it doesn't support all the bells and whistles of pickle, it's very fast: >>> t0 = time.time(); d2 = marshal.loads(s); t1 = time.time(); t1-t0 0.029728889465332031 Benchmarks made with the timeit module confirm this difference. Marshal has the added advantage of using much less space than the (binary) pickle -- the example dictionary provided above pickled to a string of 2667791 bytes, while marshal produced a string of 1700002 bytes. -- http://mail.python.org/mailman/listinfo/python-list