基准测试时如何获取内存信息?

时间:2019-04-29 13:31:20

标签: r profiling benchmarking

我想计时一下如何使用不同的库计算几个回归模型。 到现在为止我一直在使用这样的东西:

benchmark(
 "mod1" = {mod1 <- glm(varOUT~var1+var2+var3+varfact+City, data=myDF, family = "binomial")},
 "mod2" = {mod2 <- glmer(varOUT~var1+var2+var3+varfact+(1|City/ID),data=myDF,family = "binomial")},
 "mod3" = {mod3 <- glmmTMB(varOUT~var1+var2+var3+varfact+(1|ID),data=myDF,family = "binomial")},
 replications=1
)

但是现在我还想添加有关这些回归中的每一个使用多少内存(最大)的信息。我该怎么办?

致谢。

1 个答案:

答案 0 :(得分:3)

我认为您正在寻找软件包bench。由于您未提供数据,因此我仅使用小插图中的示例:

library(bench)

set.seed(42)
dat <- data.frame(x = runif(10000, 1, 1000), y=runif(10000, 1, 1000))

bnch <- bench::mark(
  logical = dat[dat$x > 500, ],
  which = dat[which(dat$x > 500), ],
  subset =subset(dat, x > 500),
  iterations = 150,
  check = FALSE
)

bnch
# A tibble: 3 x 14
  expression   min  mean median      max `itr/sec` mem_alloc  n_gc n_itr total_time result memory time 
  <chr>      <bch> <bch> <bch:> <bch:tm>     <dbl> <bch:byt> <dbl> <int>   <bch:tm> <list> <list> <lis>
1 logical    392us 532us  505us    1.2ms     1878.     377KB     2   148     78.8ms <data~ <Rpro~ <bch~
2 which      308us 358us  331us 636.45us     2793.     260KB     1   149     53.4ms <data~ <Rpro~ <bch~
3 subset     470us 553us  538us   1.19ms     1808.     494KB     3   147     81.3ms <data~ <Rpro~ <bch~
# ... with 1 more variable: gc <list>
我认为

mem_alloc是您要寻找的。默认设置是检查所有结果是否相同。由于您的情况下结果之间可能会有一些差异,因此将其设置为check = FALSE