Logo de La Coctelera

N3uro5i5

Blog Personal de Miguel Ángel Martínez Triviño

13 Marzo 2008

Comportamiento curioso - .to_json Vs .to_xml

Necesitaba hacer un pequeño benchmark para seleccionar que lenguaje de "transporte de datos" iba a usar, json o xml, a la hora de devolver la respuesta del servidor.

Para ello realizé uno que se basaba en el parseo de 100 elementos almacenados en el array videos, en igual de condiciones( las que me permite mi maquina claro).

Parseo de todos los atributos de los objetos:

  • to_json
  •  total=0; 50.times{b = Benchmark.measure{videos.to_json()}; total+=b.real }; puts total/50
     0.384012351036072
     
  • to_xml
  •  total=0; 50.times{b = Benchmark.measure{videos.to_xml()}; total+=b.real }; puts total/50
     0.271145639419556

Como podemos apreciar, el to_xml es un poco mas rápido, por lo que la balanza se empezó a inclinar hacia el uso de xml en el parseo, pero decidí seguir haciendo pruebas a ver que tal ...

Parseo de los objetos pero restringiendonos a unos atributos concretos.

  • to_json:
  • total=0; 50.times{b = Benchmark.measure{videos.to_json(:only => [:titulo, :num_videos, :rating])}; total+=b.real }; puts total/50
     0.0077793550491333
  • to_xml
  • total=0; 50.times{b = Benchmark.measure{videos.to_xml(:only => [:titulo, :num_videos, :rating])}; total+=b.real }; puts total/50
     0.0196503305435181

Ahora curiosamente el to_json es más rapido y nada mas y nada menos que un 250%.

Mi último experimento se basaba en los mismo que el anterior, pero en este caso uno de los campos seleccionados era un datetime.

Parseo restringiendo los atributos y teniendo uno del tipo datetime

  • to_json
  • total=0; 50.times{b = Benchmark.measure{videos.to_json(:only => [:titulo, :num_videos, :created_at])}; total+=b.real }; puts total/50
     0.168494687080383
  • to_xml
  • total=0; 50.times{b = Benchmark.measure{videos.to_xml(:only =>[:titulo, :num_videos, :created_at])}; total+=b.real }; puts total/50
     0.0479027700424194

to_xml un 350% mas rápido, ¿algún problema en el parseo de fechas del to_json?

Veamos los resultados en la siguiente tabla:

to_json to_xml to_json/to_xml %
todos los campos 0.384012351036072 0.271145639419556 to_xml 70% mas rápido
selectivo, ningún datetime 0.0077793550491333 0.0196503305435181 to_json 252% mas rápido
selectivo, un datetime 0.168494687080383 0.0479027700424194 to_xml 350% mas rápido

¿Alguien me lo explica?
¿Obteneis comportamientos parecidos?

Tags: benchmark, rails, json

servido por n3uro5i5 sin comentarios compártelo favorito

sin comentarios · Escribe aquí tu comentario

Escribe tu comentario





Sobre mí

Mozilla Firefox

Buscar

suscríbete

Selecciona el agregador que utilices para suscribirte a este blog (también puedes obtener la URL de los feeds):

¿Qué es esto?

Crea tu blog gratis en La Coctelera