2011-11-19 33 views
9

我有過的理解是simplejson比在Python的本地JSON快得多,比如這個線程: What are the differences between json and simplejson Python modules?App Engine上的Python 2.7,simplejson vs native json,誰更快?

不過,我只是拋出一個循環,當我在應用程序引擎的文件與Python閱讀2.7

使用原生JSON庫,它比simplejson快得多。

http://code.google.com/appengine/docs/python/python27/newin27.html

所以現在我很困惑。其他地方似乎認爲simplejson更好,但是現在使用Python 2.7的App Engine說本地速度更快。是什麼賦予了?

+0

Python 2.7附帶的版本有可能包含'simplejson'的優化。 Google也可能使用一些本地實現而不是默認模塊(有點像他們將'cPickle'重命名爲'pickle')。我僅僅是猜測;-) – Cameron

回答

23

在發佈Python 2.7運行時之前,幾乎App Engine中包含的每個模塊以及您自己可以包含的每個模塊都是純python。在2.7版本中,json模塊包含用C語言編寫的加速模塊,因此它比您可以在App Engine上運行的任何simplejson快得多。

在正常使用的2.7版本上使用simplejson的好處(主要是版本比最新版本的Python 2.7版本更新)不適用,因爲無法編譯最新的加速版本並將它們部署到App Engine。

+0

我正在爲Google開發一個項目,他們要求我們出於安全原因使用simplejson: ,因爲「它將''編碼爲''到'\ u003c','>'到'\ u003e',這有助於防止內容嗅探XSS攻擊(https://code.google.com/p/browsersec/wiki/Part2#Content_handling_mechanisms)「 – Philoozushi

+0

@Philoozushi:這是一個鏈接到一本5年的手冊之前simplejson被添加到Python stdlib作爲「json」。它們實際上是相同的代碼庫並且產生相同的輸出(並且它們都不是那種編碼)。 – geoffspear

+0

確實你是對的!我只是轉播谷歌的這些信息,但我沒有時間檢查它,對不起。感謝精確! – Philoozushi

4

當我遷移到python 2.7時,我發現自己被迫直接執行import json。在我的應用程序中,我必須從simplejson更改爲此。您可能會發現通常建議保持與您的「主要組件」的最大兼容性,我認爲Python 2.7是我的項目的主要用途/組件之一,其他組件是Jinja2,WTForms和i18n翻譯。

相關問題