3
我發現一個網站的優化工作正在進行中,最終酸洗QuerySets成爲緩存的瓶頸,無論代碼有多聰明,都會在1時間內取消相對較大的QS -2秒會殺死所有的努力。
有沒有人遇到過這個?Django緩存 - Pickle很慢
我發現一個網站的優化工作正在進行中,最終酸洗QuerySets成爲緩存的瓶頸,無論代碼有多聰明,都會在1時間內取消相對較大的QS -2秒會殺死所有的努力。
有沒有人遇到過這個?Django緩存 - Pickle很慢
如果您目前正在使用泡菜,我可能會推薦cPickle,據稱其速度可達1000倍。
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
悲傷的是,我已經用它:) –
在這種情況下,你可能會考慮[馬歇爾(http://docs.python.org/2/library/marshal.html),因爲它是多速度更快,但是,正如文檔所說,不能抵禦錯誤或惡意數據。 – Tadgh
@GillBates:如果你使用cPickle,並且仍然觀察這些1-2秒的unpickling,那麼這些查詢集似乎必須相當龐大。他們多大?你真的需要緩存所有的數據嗎? – liori