Documentos de Académico
Documentos de Profesional
Documentos de Cultura
XML
JSON [6] está diseñado para ser un lenguaje de intercambio de datos que es legible por el
hombre y fácil para las computadoras para analizar y utilizar. JSON está directamente
soportado dentro de JavaScript [7] y es más adecuado para aplicaciones JavaScript; Lo que
proporciona ganancias de rendimiento significativas sobre XML, lo que requiere bibliotecas
adicionales para recuperar datos de los objetos DOM (Document Object Model) [12]. Se
estima que JSON analiza hasta cien veces más rápido que XML [6] en los navegadores
modernos, pero a pesar de sus afirmaciones de desempeño notable, los argumentos contra
JSON incluyen falta de soporte de espacio de nombres, falta de validación de entrada y
inconvenientes de extensibilidad. Crockford [6] aborda tales argumentos alegando que "cada
objeto es un espacio de nombres. Su conjunto de claves es independiente de todos los demás
objetos, incluso exclusivos de anidamiento. Además, JSON utiliza el contexto para evitar la
ambigüedad, al igual que los lenguajes de programación ", que la validación de los insumos
es responsabilidad de las aplicaciones de dominio individuales, y que la falta de
extensibilidad de las reivindicaciones es abordada por la flexibilidad de las construcciones
JSON. La sintaxis de JSON es legible por el ser humano. La Figura 2 describe un ejemplo
en el que JSON se utiliza para codificar un nombre y un apellido.
4. METODOLOGÍA
Este estudio de caso mide el tiempo de transmisión y la utilización de los recursos. La hipótesis nula
establece que no hay diferencia en los tiempos de transmisión y utilización de recursos entre JSON
y XML. El entorno operativo para este estudio de caso consiste en un programa cliente / servidor. El
cliente se configura de forma aislada y envía objetos JSON y XML al servidor para medir el
rendimiento y la utilización de recursos. Encontramos evidencia significativa para apoyar el rechazo
de la hipótesis nula.
Nuestros casos de prueba utilizan un programa cliente de red simple para transmitir objetos
Java codificados en XML y codificados en JSON a un servidor. El cliente y el servidor inician
conexiones basadas en TCP / IP donde el servidor escucha en un puerto y el cliente se conecta
en ese puerto. El cliente y el servidor utilizan técnicas de codificación similares. Para simular
servidores realistas y potencialmente ejecutar pruebas de estrés, el servidor es de múltiples
hilos. El servidor descodifica el texto JSON o XML al recibirlo y luego descarta el texto.
4.2. Ambiente
El programa cliente envía datos codificados de JSON y XML en un entorno de workbench aislado. El
hardware consiste en dos estaciones de trabajo interconectadas por un conmutador. Los servicios
de firewall de software están deshabilitados. Dado que el intercambio de datos no implica leer y
escribir en el almacenamiento secundario, la capacidad de lectura / escritura de disco no es
importante para estas estaciones de trabajo. Las estaciones de trabajo tienen una instalación
mínima de CentOS 5.2 [14] con paquetes de software adicionales para registrar varias medidas del
sistema. Las estaciones de trabajo están conectadas a una red de área local aislada. El switch soporta
conexiones gigabit y las estaciones de trabajo tienen tarjetas de interfaz de red de 10/100 megabits.
Los cables Cat5e funcionan entre las tarjetas de interfaz de red de las estaciones de trabajo y el
conmutador, y la topología completa está dispuesta a poca distancia (menos de 10 metros). De
acuerdo con la herramienta de monitoreo de red, IPTraf [5], nuestra red aislada no muestra tráfico
frecuente de red.
4.3. Mediciones
Elegimos medir las siguientes métricas: número de objetos enviados, tiempo total para
enviar el número de objetos, tiempo promedio por transmisión de objetos, utilización de la
CPU del usuario, utilización de la CPU del sistema y utilización de la memoria. El tiempo
total por prueba nos indica cuánto tarda el servidor en recibir cada objeto del cliente. El
tiempo promedio por objeto describe cuánto tarda (en promedio) en que el servidor reciba un
objeto del cliente. La utilización de la CPU del usuario es el porcentaje de tiempo que se pasa
realizando los procesos del usuario y la utilización de la CPU del sistema es el porcentaje de
tiempo dedicado a realizar procesos del sistema. De acuerdo con RedHat [9], altos
porcentajes de CPU de usuario tienden a ser favorable, mientras que los altos porcentajes del
sistema tienden a apuntar hacia problemas que requieren más investigación [13]. La
utilización de la memoria mide el porcentaje de memoria disponible y libre en el sistema.
Nuestras métricas se registran en archivos utilizando software cliente / servidor desarrollado
internamente y System Activity Reporter (SAR), una utilidad de grabación métrica [11]. El
programa cliente / servidor mide el tiempo de transmisión por transmisión de objetos. SAR
mide la utilización de recursos por tiempo-duración. Las mediciones de tiempo se calculan
de la siguiente manera. El cliente se conecta y envía un comando de inicio al servidor. Cuando
el servidor recibe el comando start, inicia un temporizador y envía un mensaje listo. El cliente
recibe el mensaje listo y comienza la transmisión de objetos. Cuando el cliente termina de
transmitir sus objetos, envía una señal final al servidor y el servidor apaga su temporizador
y sus métricas de registro. Las métricas se registran en un archivo con una marca de tiempo
para indicar cuándo finaliza la prueba.
5. RESULTADOS
Los resultados ilustran las diferencias entre la codificación JSON y XML en diferentes escenarios de
transmisión. Esta sección presenta las métricas obtenidas para las mediciones medias, compara las
métricas de transmisión de alto versus bajo número de objetos codificados y determina si JSON y
XML son estadísticamente diferentes para cada una de nuestras mediciones. Presentamos las
mediciones de ambos escenarios y discutimos sus implicaciones.
5.1. Escenario 1
El escenario 1 es una transmisión de mucho tiempo de una gran cantidad de objetos. Se usan
grandes cantidades de objetos para lograr medidas medias precisas. El cliente envía un millón de
objetos codificados al servidor para JSON y XML. Medimos el tiempo y la utilización de los recursos.
En las Tablas 1 y 2 se enumeran las mediciones y los valores respectivos obtenidos de este ensayo:
Tabla 1. Escenario 1 JSON vs. XML Timming
5.2. Escenario 2
El escenario 2 se compone de una serie de ensayos más pequeños que determinan si JSON y XML
son estadísticamente diferentes según cada una de nuestras medidas. Se utiliza la prueba t de
comparación de la media. Enviamos 20.000, 40.000, 60.000, 80.000 y 100.000 objetos codificados
al servidor y recopilamos métricas para cada caso. Las tablas 3, 4 y 5 muestran las métricas obtenidas
de estos ensayos:
Tabla 3. Escenario 2 JSON Vs XML Timing
La Figura 3 ilustra las utilidades promedio de JSON para CPU y memoria por ensayo. La
Figura 4 ilustra la utilización promedio de la CPU y la memoria de XML por ensayo. La
Figura 5 ilustra las diferencias entre las utilizaciones de recursos de JSON y las utilizaciones
de recursos de XML, trazando la Figura 3 y la Figura 4 en el mismo gráfico. Las figuras 3-5
indican que XML parece utilizar menos la utilización de la CPU del usuario que JSON. Las
transmisiones codificadas JSON y XML utilizan casi la misma cantidad de memoria en el
servidor.
Figura 3. Escenario 2 Utilización de recursos de JSON
5.3. Discusión
Para analizar nuestros resultados hacemos observaciones cualitativas de alto nivel y
analizamos cada vez más el significado de cada medida mediante pruebas estadísticas. Esta
sección explica las diferencias observadas usando una prueba t tradicional. Observaciones
cualitativas de alto nivel entre JSON y XML se observan en ambos escenarios de prueba. El
escenario 1 ilustra mediciones medias precisas debido al gran número de transmisiones de
objetos codificados. El Escenario 2 proporciona observaciones de grano fino de los impactos
de menos transmisiones para cada medición. La Tabla 6 enumera las diferencias entre JSON
y XML basadas en las observaciones y los resultados de cada escenario. Los valores medios
de las mediciones del escenario 1 indican que enviar datos en codificación JSON es en
general más rápido que usar la codificación XML. Las mediciones de tiempo medio y tiempo
total proporcionan una indicación de que la velocidad de JSON supera la velocidad de XML.
Además, JSON utiliza más recursos de CPU de usuario que XML en el escenario 1. La
memoria depende del estado de los sistemas antes de un escenario o ejecución de prueba; Sin
embargo, el uso es similar entre JSON y XML. De acuerdo con nuestras observaciones y las
métricas obtenidas de ambos escenarios, los tiempos de transmisión de XML son menores
cuando se transmiten menos objetos y los tiempos de transmisión de JSON son los mismos
cuando se transmiten menos objetos.
La transmisión de una menor cantidad de objetos codificados por JSON no parece afectar a la
medida de utilización de la CPU del usuario cuando se compara con la transmisión de una cantidad
mayor de objetos. La prueba t es una manera de comparar las medias de dos distribuciones y
determinar si son estadísticamente diferentes. Ejecutamos una ttest no apareada de dos caras sobre
los resultados del escenario 2 para comparar JSON y XML con respecto a cada medida. El nivel de
significación se establece en α = 0,05 [10]. La distribución de cada medida es el conjunto que
comprende las cinco observaciones que vienen de cada uno de los cinco ensayos en el escenario 2.
Hacemos la suposición hipótesis nula de que JSON y XML tienen los mismos medios para cada
distribución de medida. Luego, usamos la prueba t para calcular la probabilidad que proporcionaría
evidencia para apoyar una hipótesis alternativa. La Tabla 7 enumera las distribuciones de muestras
utilizadas en las pruebas t para comparar cada medida. Los valores de distribución provienen de las
tablas 3, 4 y 5.
Tabla 7. Las poblaciones de muestras JSON y XML utilizadas en la prueba t
7. CONCLUSIÓN
Este estudio de caso comparó las diferencias entre dos formatos de intercambio de datos actuales.
Los resultados indican que JSON es más rápido y utiliza menos recursos que su contraparte XML;
Proporcionando así evidencia significativa para refutar la hipótesis nula. JSON y XML proporcionan
fortalezas únicas, pero la importancia del rendimiento y la utilización de los recursos debe
entenderse al tomar decisiones entre los formatos de intercambio de datos. Este estudio de caso ha
proporcionado un punto de referencia claro que puede utilizarse para comparar estos formatos al
seleccionar un mecanismo de transporte. Tenemos la intención de continuar y mejorar nuestras
investigaciones de la siguiente manera: 1) eliminar el cuello de botella potencial en la red en
nuestros escenarios de prueba mediante el uso de tarjetas de red Gigabit. Las tarjetas de red Gigabit
nos dan la capacidad de realizar casos basados en el estrés para ver qué formato de intercambio de
datos maneja conexiones múltiples de manera más efectiva. Las tarjetas de red Gigabit también nos
dan la capacidad de obtener métricas de casos mientras el servidor está bajo carga pesada, y 2)
realizar una encuesta para comparar los tiempos de aprendizaje de JSON y XML para ver qué
formato tiene una curva de aprendizaje más pronunciada.