更新:
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
使用iris
数据集的示例2
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
来获得相同的结果)- 你期望得到什么答案? - agstudyRJSONIO
应该会快得多。这基于我听到的关于RJSONIO
的信息,因此我试图确认它是否确实较慢,或者我只是做错了什么。 - Ricardo SaportaRJSONIO
表现得要好得多。之后我就停止了关注任何关于rjson
包的消息,这很遗憾,因为在2012年3月,它开始使用JSON解析器的C实现——在我看来,与已经使用了C库的RJSONIO
相比,在那时变得更快了。 - daroczigjsonlite
。 - timelyportfolio