gpt4 book ai didi

r - RJSONIO vs rjson-更好的调优

转载 作者:行者123 更新时间:2023-12-03 14:25:12 26 4
gpt4 key购买 nike

更新:

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

最佳答案

> 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


测试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


以下是一些软件包的比较。希望这些链接对您有帮助...

1) New package: jsonlite. A smart(er) JSON encoder/decoder.

2) Improved memory usage and RJSONIO compatibility in jsonlite 0.9.15

3) A biased comparsion of JSON packages in R

关于r - RJSONIO vs rjson-更好的调优,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15308435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com