【发布时间】:2013-05-13 17:41:16
【问题描述】:
在优化一个网站时,我发现,QuerySets 的酸洗最终成为缓存的瓶颈,无论你的代码多么聪明,在 1-2 秒的时间内解开相对较大的 QS 将扼杀所有的努力.
有人遇到过这个吗?
【问题讨论】:
标签: python django caching serialization pickle
在优化一个网站时,我发现,QuerySets 的酸洗最终成为缓存的瓶颈,无论你的代码多么聪明,在 1-2 秒的时间内解开相对较大的 QS 将扼杀所有的努力.
有人遇到过这个吗?
【问题讨论】:
标签: python django caching serialization pickle
如果您目前只使用pickle,我可以推荐cPickle,据称它的速度最高可达1000 倍。
【讨论】:
...use the pickle module instead – the performance is comparable...
ultrajson 来救援!
In [1]: from string import letters
In [3]: import ujson
In [5]: import cPickle as pickle
In [7]: import random
In [8]: def random_string(n=10): return ''.join([random.choice(letters) for _ in xrange(n)])
In [9]: DATA = {random_string(): list(range(1000)) for _ in xrange(1000)}
In [12]: %timeit -r 3 -n 100 ujson.dumps(DATA)
100 loops, best of 3: 89.2
In [13]: %timeit -r 3 -n 100 pickle.dumps(DATA)
100 loops, best of 3: 285 ms per loop
【讨论】: