背景:
这是R语言的“微基准测试”包:
https://cran.r-project.org/web/packages/microbenchmark/index.html
参考手册中的第一行指出,该包是为“准确计时函数”而构建的。
其中一个问题是内在的时间与空间的权衡。有些解决方案对内存要求很高,但CPU速度快;有些则对CPU要求很高,但内存占用非常小。
问题:
如何在R中同时、并且具有良好的分辨率,对执行时间和执行期间的内存使用进行基准测试/微基准测试?
背景:
这是R语言的“微基准测试”包:
https://cran.r-project.org/web/packages/microbenchmark/index.html
参考手册中的第一行指出,该包是为“准确计时函数”而构建的。
其中一个问题是内在的时间与空间的权衡。有些解决方案对内存要求很高,但CPU速度快;有些则对CPU要求很高,但内存占用非常小。
问题:
如何在R中同时、并且具有良好的分辨率,对执行时间和执行期间的内存使用进行基准测试/微基准测试?
迟到总比不到好:你可以使用 bench::mark()
来测量代码的时间和内存使用情况(以及一些其他变量)。
例如,(参见 ?mark
的帮助页面)
library(bench)
dat <- data.frame(x = runif(100, 1, 1000), y=runif(10, 1, 1000))
mark(
dat[dat$x > 500, ],
dat[which(dat$x > 500), ],
subset(dat, x > 500)
)
#> # A tibble: 3 x 6
#> expression min median `itr/sec` mem_alloc `gc/sec`
#> <bch:expr> <bch:tm> <bch:tm> <dbl> <bch:byt> <dbl>
#> 1 dat[dat$x > 500, ] 21.7µs 23.6µs 40663. 4.15KB 89.7
#> 2 dat[which(dat$x > 500), ] 22.2µs 24.1µs 40228. 2.77KB 92.7
#> 3 subset(dat, x > 500) 36µs 39.2µs 23867. 20.12KB 86.2
该内容于2020年03月02日由reprex包(v0.3.0)创建。
microbenchmark
的更简单的顶层内存使用比较方法,我建议(请求?)你提供一个快速的自我回答。如果你没有时间,也许你可以建议一个profvis
问题,建议使用情况,我知道我会“+1”的。 - r2evans