r rjsonio rjson

RJSONIO vs rjson-mejor sintonía



(2)

ACTUALIZAR:

El tl; dr es que RJSONIO ya no es la más rápida de las dos opciones. Más bien, rjson es ahora mucho más rápido.

Ver los comentarios para confirmación adicional de resultados.

Tenía la impresión de que se suponía que RJSONIO debía ser más rápido que rjson .
Sin embargo, estoy obteniendo los resultados opuestos.

Mi pregunta es:

  • ¿Hay algún ajuste que pueda o deba realizarse para mejorar los resultados de RJSONIO ? (es decir, ¿estoy pasando por alto algo?)

A continuación se muestran las comparaciones con datos reales (donde U es el contenido de una página web de json) y luego un json imitado.

## REAL DATA library(microbenchmark) > microbenchmark(RJSONIO::fromJSON(U), rjson::fromJSON(U)) Unit: milliseconds expr min lq median uq max 1 rjson::fromJSON(U) 29.46913 30.16218 31.74999 34.11012 158.6932 2 RJSONIO::fromJSON(U) 175.11514 181.67742 186.52871 195.90646 414.6160 > microbenchmark(RJSONIO::fromJSON(U, simplify=FALSE), rjson::fromJSON(U)) Unit: milliseconds expr min lq median uq max 1 rjson::fromJSON(U) 27.92341 28.7430 29.60091 30.63291 1 143.9478 2 RJSONIO::fromJSON(U, simplify = FALSE) 173.30136 179.5815 183.94315 190.17245 2 328.8996

Ejemplo con datos simulados

(Resultados similares)

# MOCK DATA U <- toJSON(list(1:10, LETTERS, letters, rnorm(20))) microbenchmark(RJSONIO::fromJSON(U), rjson::fromJSON(U)) # Unit: microseconds # expr min lq median uq max # 1 rjson::fromJSON(U) 94.788 100.8650 105.6035 111.0740 3457.479 # 2 RJSONIO::fromJSON(U) 520.131 527.7775 533.2715 555.2415 942.136

Ejemplo 2 con conjunto de datos de iris

Iris.JSON <- toJSON(iris) microbenchmark(RJSONIO::fromJSON(Iris.JSON), rjson::fromJSON(Iris.JSON)) # Unit: microseconds # expr min lq median uq max # 1 rjson::fromJSON(Iris.JSON) 229.669 235.571 238.511 241.423 260.164 # 2 RJSONIO::fromJSON(Iris.JSON) 1209.607 1224.793 1232.165 1238.953 12039.772

> sessionInfo() R version 2.15.1 (2012-06-22) Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] data.table_1.8.8 stringr_0.6.1 RJSONIO_1.0-1 rjson_0.2.11 loaded via a namespace (and not attached): [1] plyr_1.7.1



> library(''BBmisc'') > suppressAll(lib(c(''RJSONIO'',''rjson'',''jsonlite'',''microbenchmark''))) > U <- toJSON(list(1:10, LETTERS, letters, rnorm(20))) > microbenchmark( + rjson::toJSON(U), + RJSONIO::toJSON(U), + jsonlite::toJSON(U, dataframe = "column"), + times = 10 + ) Unit: microseconds expr min lq mean median uq max neval cld rjson::toJSON(U) 65.174 68.767 2002.7007 88.2675 103.151 19179.224 10 a RJSONIO::toJSON(U) 299.186 304.832 482.8038 329.7210 493.683 1351.727 10 a jsonlite::toJSON(U, dataframe = "column") 485.985 501.381 555.4192 548.5935 587.083 708.708 10 a

Pruebas system.time ()

> microbenchmark( + system.time(rjson::toJSON(U)), + system.time(RJSONIO::toJSON(U)), + system.time(jsonlite::toJSON(U, dataframe = "column")), + times = 10) Unit: milliseconds expr min lq mean median uq max neval cld system.time(rjson::toJSON(U)) 112.0660 115.8677 119.8426 119.8372 121.6908 132.2111 10 ab system.time(RJSONIO::toJSON(U)) 115.4223 118.0262 129.2758 120.5690 148.5175 151.6874 10 b system.time(jsonlite::toJSON(U, dataframe = "column")) 113.2674 114.9096 118.0905 117.8401 120.9626 123.6784 10 a

A continuación se presentan comparaciones de algunos paquetes. Espero que estos enlaces ayuden ...

1) Nuevo paquete: jsonlite. Un codificador / decodificador JSON inteligente (er).

2) Uso de memoria mejorado y compatibilidad con RJSONIO en jsonlite 0.9.15

3) Una comparsion sesgada de paquetes JSON en R