2010-03-23 12 views
9

Sé que Android tiene un analizador JSON incorporado, pero me preguntaba si valía la pena usar algo que ofreciera un mejor rendimiento (como Jackson: consulte http://jackson.codehaus.org/). ¿Alguien lo intentó?Reemplazar el analizador JSON estándar de Android para un mejor rendimiento?

+0

nunca he tenido problemas con la velocidad del analizador JSON de Android. Incluso tengo un archivo JSON de 41kb en una de mis aplicaciones, y se carga en un par de cientos de ms en un G1 (lo cual está bien, ya que solo necesita ejecutarse una vez cuando se inicia la aplicación). –

+0

La velocidad de habla absoluta puede ser aceptable. Todavía es bueno tener en cuenta que en las CPU de escritorio normales, la velocidad de análisis JSON es del orden de decenas de megas; el archivo de 41 kb se haría en milisegundos o menos.Incluso con las CPU más lentas que el sistema Android a menudo tiene, cien milisegundos es bastante lento, en comparación con las alternativas rápidas. Entonces, la herramienta adecuada para el trabajo. Para uso casual (como leer en el archivo de configuración al inicio) los manejadores integrados suelen ser decentes. Todavía es bueno saber que hay margen de mejora si los casos de uso así lo exigen. – StaxMan

Respuesta

7

Bueno, aquí hay un couple de links que compara el rendimiento de Jackson JSON con los almacenamientos intermedios JSON, SAX y Protocol existentes. Según el autor, Jackson es más rápido que SAX o el JSON incorporado y está a la par con Protocol Buffers. Esa última parte suena un poco sospechosa, pero, independientemente, ciertamente parece que Jackson trabaja en Android y puede valer la pena experimentar.

No he comprobado el tamaño de JAR, sin embargo. Si es enorme, a menos que estuvieras muriendo por un rendimiento JSON adicional, puede que no valga la pena el impacto en el espacio.

+0

Sí, el tamaño del archivo está definitivamente en mi lista de posibles restricciones. Supongo que si estuviera masticando un montón de JSON en mi aplicación, podría valer la pena agregar a Jackson, pero me quedaré con el JSON estándar por ahora. – Eno

4

Última respuesta, pero todavía podría ayudar. Estoy usando Jackson para analizar JSON desde Twitter y persistiendo Maps en la base de datos. El mapeo de datos en Jackson es simplemente maravilloso. Ser capaz de asignar JSON directamente a un objeto es increíble y hace que todo sea mucho más limpio.

Incluso si solo está analizando respuestas simples, la asignación de datos puede ayudarlo a hacer que su código sea más limpio (y más eficiente). Para mí, es un regalo del cielo que no tenga que escribir la lógica de análisis para cada tipo de función API api.

+0

Gracias por esa retroalimentación, es genial tener otra herramienta en el cofre si es necesario. – Eno

0

Solo una perspectiva más en estos analizadores. Estuve revisando el Google IO para 2009 y realmente se habla mucho sobre el uso eficiente de la batería para los desarrolladores de aplicaciones.

Aquí está el enlace a la charla: link

Ahora según el cura incorporado charla para Android está basada en árbol y estos se supone que son ineficientes cuando se trata de la vida de la batería. ¿Alguien realmente ha investigado esto?

Leyendo a través de esta discusión, parece que el analizador de Jackson parece ser un ganador en todo. Es casi igual de rápido, si no más que uno incorporado y también está basado en eventos/secuencias en lugar de basado en árboles, que es mejor en términos de uso de la batería.

Solo quería compartir y obtener algunas opiniones al respecto.

0

Yo uso jackson json para implementar mi aplicación de Android que se comunica con el servidor a través de json-rpc. Me gustaría utilizarlo para serializar/deserializar solicitudes json-rpc y respuestas y objetos para transferir los datos. Uso la versión 2.0 de Jackson-json. He puesto en mi ruta de creación dos jarras: jackson-databind-2.0.0.jar, jackson-core-2.0.0.jar y jackson-annotations-2.0.0.jar.

En la nota al margen: ¿Hay alguna aplicación json-rpc para el android. el tráfico json-rpc y http separado sería bueno. He buscado mucho en Google, pero no he encontrado un buen generador json-rpc, serializador/deserializador json y para el transporte iré con la consulta de Android.

Cuestiones relacionadas