2011-11-19 16 views
9

Tôi đã có sự hiểu biết rằng simplejson là nhanh hơn nhiều so với json mẹ đẻ bằng Python, chẳng hạn như chủ đề này: What are the differences between json and simplejson Python modules?Python 2.7 trên App Engine, simplejson vs json bản địa, ai nhanh hơn?

Tuy nhiên, tôi chỉ ném cho một vòng lặp khi tôi đọc trong App tài liệu cơ mà với Python 2.7

Sử dụng thư viện JSON gốc, nhanh hơn nhiều so với simplejson.

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

Vì vậy, bây giờ tôi đang bối rối. Ở khắp mọi nơi khác có vẻ như nói simplejson là tốt hơn, nhưng bây giờ App Engine với Python 2.7 nói rằng bản địa nhanh hơn. Đưa cái gì?

+0

Có thể phiên bản đi kèm với Python 2.7 bao gồm tối ưu hóa 'simplejson'. Cũng có thể Google đang sử dụng một số cài đặt gốc thay vì mô-đun mặc định (loại giống như cách họ đổi tên 'cPickle' thành' pickle'). Chỉ là suy đoán về phía tôi, mặc dù ;-) – Cameron

Trả lời

23

Trước khi phát hành thời gian chạy Python 2.7, gần như mọi mô-đun đi kèm với App Engine, và theo đúng nghĩa là mọi mô-đun bạn có thể đưa vào là con trăn thuần túy. Với bản phát hành 2.7, mô-đun json bao gồm các tăng tốc được viết bằng C, làm cho nó nhanh hơn nhiều so với bất kỳ simplejson nào bạn có thể chạy trên App Engine.

Lợi ích khi sử dụng simplejson trên 2,7 bạn nhận được bình thường (chủ yếu là phiên bản mới hơn phiên bản Python 2.7 mới nhất) không áp dụng vì bạn không thể biên dịch các bản tăng tốc mới nhất và triển khai chúng cho App Engine.

+0

Tôi đang làm việc trên một dự án cho Google và họ yêu cầu chúng tôi sử dụng simplejson vì lý do bảo mật: vì "mã hóa '<' thành '\ u003c' và '>' để '\ u003e' giúp ngăn chặn nội dung đánh hơi các tấn công XSS (https://code.google.com/p/browsersec/wiki/Part2#Content_handling_mechanisms) " – Philoozushi

+0

@Philoozushi: đó là liên kết tới sổ tay 5 tuổi được viết trước khi simplejson được thêm vào Python stdlib là "json". Chúng theo nghĩa đen là cùng một codebase và tạo ra cùng một đầu ra (và cả hai đều không mã hóa). – geoffspear

+0

Thật vậy, bạn đã đúng! Tôi đã chuyển tiếp thông tin này từ Google, nhưng tôi không có thời gian để kiểm tra, xin lỗi. Cảm ơn sự chính xác! – Philoozushi

4

Tôi thấy mình bị buộc phải làm thẳng import json khi tôi di chuyển sang python 2.7. Trong ứng dụng của tôi, tôi đã phải thay đổi từ simplejson này. Bạn có thể thấy nó thường được khuyến khích để giữ khả năng tương thích tối đa với "thành phần chính" của bạn và tôi xem python 2.7 một trong những dự án/thành phần chính của dự án của tôi, nơi những người khác là Jinja2, WTForms và bản dịch i18n.

Các vấn đề liên quan