2011-11-19 7 views
9

que he tenido el entendimiento de que simplejson es mucho más rápido que el JSON nativo en Python, como en este tema: What are the differences between json and simplejson Python modules?Python 2.7 en App Engine, simplejson vs native json, ¿quién es más rápido?

Sin embargo, sólo estaba lanzado para un bucle cuando leí en la App documentación Los motores que con Python 2.7

Utiliza la biblioteca JSON nativa, que es mucho más rápido que simplejson.

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

así que ahora estoy confundido. En cualquier otro lugar parece decir que simplejson es mejor, pero ahora App Engine con Python 2.7 dice que el nativo es más rápido. ¿Lo que da?

+0

Es posible que la versión que se envía con Python 2.7 incluya las optimizaciones de 'simplejson'. También es posible que Google esté usando alguna implementación nativa en lugar del módulo predeterminado (algo así como cómo renombran 'cPickle' a' pickle'). Mera especulación por mi parte, sin embargo ;-) – Cameron

Respuesta

23

Antes del lanzamiento del tiempo de ejecución de Python 2.7, casi todos los módulos incluidos con App Engine, y literalmente cada módulo que podía incluir, eran puros pitones. Con la versión 2.7, el módulo json incluye aceleraciones escritas en C, lo que lo hace mucho más rápido que cualquier simplejson que pueda ejecutar en App Engine.

No se aplican los beneficios de usar simplejson en 2.7 (principalmente con una versión más nueva que cuando se lanzó la última versión de Python 2.7), ya que no puede compilar las aceleraciones en la última versión versión y desplegarlos en App Engine.

+0

Estoy trabajando en un proyecto para Google, y nos pidieron que usáramos SimpleJson por razones de seguridad: porque "codifica" <'a' \ u003c ', y'> ' a '\ u003e' que ayuda a evitar que el contenido detecte ataques XSS (https://code.google.com/p/browsersec/wiki/Part2#Content_handling_mechanisms) " – Philoozushi

+0

@Philoozushi: es un enlace a un manual de 5 años escrito before simplejson se agregó a Python stdlib como "json". Literalmente son la misma base de código y producen el mismo resultado (y ninguno de ellos hace esa codificación). – geoffspear

+0

De hecho, tienes razón! Solo estaba retransmitiendo esta información de Google, pero no tuve tiempo de revisarla, lo siento. Gracias por la precisión! – Philoozushi

4

Me vi forzado a hacer una recta import json cuando migré a Python 2.7. En mi aplicación tuve que cambiar de simplejson a esto. Puede que le resulte generalmente recomendable mantener la máxima compatibilidad con su "componente principal" y considero que python 2.7 es uno de los usos/componentes principales de mi proyecto, mientras que los otros son Jinja2, WTForms y las traducciones i18n.

Cuestiones relacionadas