Running functions in R multiple times during benchmarking

前端 未结 3 697
故里飘歌
故里飘歌 2021-02-01 23:56

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 but I don\'t w

相关标签:
3条回答
  • 2021-02-02 00:13

    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)
    

    plot microbenchmark

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

    autoplot(m)
    

    autoplot microbenchmark

    0 讨论(0)
  • 2021-02-02 00:13

    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 讨论(0)
  • 2021-02-02 00:28
    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
    
    0 讨论(0)
提交回复
热议问题