在基准测试期间多次运行R中的函数

时间:2011-08-02 21:38:54

标签: function r benchmarking

我正在尝试使用system.time()来衡量R中函数的计算时间。 我想运行几百次以获得平均值,但我不想要 多次复制和粘贴。有没有更简单的方法呢?

3 个答案:

答案 0 :(得分:17)

microbenchmark软件包采用,times=选项,并且具有更准确的附加功能。

> library(microbenchmark)
> m <- microbenchmark( seq(10)^2, (1:10)^2, times=10000)
> m
Unit: nanoseconds
       expr   min    lq median    uq     max
1  (1:10)^2  2567  3423   3423  4278   41918
2 seq(10)^2 44484 46195  46195 47051 1804147
> plot(m)

plot microbenchmark

使用ggplot2的尚未发布的autoplot()方法:

autoplot(m)

autoplot microbenchmark

答案 1 :(得分:12)

system.time(replicate (  ... stuff ..) )

或者:(嘿,我和Dirk有同样的答案我并不感到羞耻。)

require(rbenchmark)
benchmark( stuff... )   # Nice for comparative work

答案 2 :(得分:11)

您希望使用rbenchmark软件包及其功能benchmark(),它可以为您提供一切。

以下是其帮助页面中的第一个示例:

R> example(benchmark)

bnchmrR> # example 1
bnchmrR> # benchmark the allocation of one 10^6-element numeric vector, 
bnchmrR> # replicated 100 times
bnchmrR> benchmark(1:10^6)
    test replications elapsed relative user.self sys.self user.child sys.child
1 1:10^6          100   0.327        1      0.33        0          0         0

对于真正的表达式基准测试,还有microbenchmark包。