ОБНОВЛЕНИЕ:
tl;dr заключается в том, что RJSONIO
больше не является более быстрым из двух вариантов. Скорее rjson
теперь намного быстрее.
См. комментарии для дополнительного подтверждения результатов
У меня сложилось впечатление, что RJSONIO
должен был быть быстрее, чем rjson
.
Однако я получаю противоположные результаты.
Мой вопрос:
- Есть ли какая-либо настройка, которую можно/нужно выполнить для улучшения результатов
RJSONIO
? (т.е. я что-то упускаю из виду?)
Ниже приведены сравнения с использованием реальных данных (где U
— это содержимое веб-страницы json), а затем смоделированного json.
## 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
Пример с фиктивными данными
(Похожие результаты)
# 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
Пример 2 с набором данных 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
simplify = FALSE
для получения идентичных результатов). Что вы ожидаете в качестве ответа? - person agstudy   schedule 09.03.2013RJSONIO
будет намного быстрее. [Это основано на том, что я слышал оRJSONIO
, и поэтому я пытаюсь подтвердить, действительно ли он медленнее или, скорее, я просто делаю что-то неправильно] - person Ricardo Saporta   schedule 09.03.2013RJSONIO
работал быстрее, но теперьrjson
, похоже, превосходит его. Даже с наборами данныхiris
и выше. Возможно, это связано с какими-то настройками компилятора, хотяrjson
тоже использует реализацию C начиная с 0.2.7 — так что это обновление производительности должно было произойти где-то год назад, а не сейчас. - person daroczig   schedule 09.03.2013rjson
превосходитRJSONIO
в любом наборе данных, на котором я его тестирую. - person Ricardo Saporta   schedule 09.03.2013RJSONIO
, похоже, работал намного лучше. После этого я перестал следить за новостями о пакетеrjson
, что очень обидно, так как в марте (2012) он начал использовать C-реализацию парсера JSON - ИМХО, в то время он стал намного быстрее по сравнению сRJSONIO
, который уже использовал C библиотека - person daroczig   schedule 10.03.2013jsonlite
- person timelyportfolio   schedule 10.07.2015