python序列化模塊marshal和cPickle的效率比較
最近系統加入了異步請求,所以需要對象持久化!爲了將python對象持久化(比如爲了web app的session/cache需要)。我們不得不將其轉化成字符串以後存到文件或則是數據庫。
Python 提供了兩個基於 C 的模塊 cPickle 和 marshal 來做這個序列化反序列化的操作。marshal 貌似僅限於少數幾種 python 內置數據對象,所以想象起來好像 marshal 比 cPickle 要快一些,而且我們自己做的幾次benchmark好像也證明了這點。但實際上果真如此嗎?
經過嚴密的測試發現:序列化“字符串”的時候CPickle要比marshal快。反序列化的效率基本沒有什麼差別。
這裏一個老外給出了一個比較全面的測試結果,和使用建議。