开发者

Running functions in R multiple times during benchmarking

开发者 https://www.devze.com 2023-03-25 00:19 出处:网络
I am trying to measure the computation time of a function in R using system.time(). I want to run the function a few hundred times to get an average bu开发者_高级运维t I don\'t want

I am trying to measure the computation time of a function in R using system.time(). I want to run the function a few hundred times to get an average bu开发者_高级运维t I don't want to copy and paste that many times. Is there an easier way to do that?


The microbenchmark package takes a ,times= option and has the added bonus of being a bit more accurate.

> 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)

Running functions in R multiple times during benchmarking

And using the not-yet-released autoplot() method for ggplot2:

autoplot(m)

Running functions in R multiple times during benchmarking


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

Or: (hey, I'm not ashamed to have the same answer as Dirk.)

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


You want to use the rbenchmark package and its function benchmark() which does just about everything for you.

Here is the first example from its help page:

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

For truly expression-level benchmarking, there is also the microbenchmark package.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号