Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Multi function tester alternative to system.time

Tags:

r

I've seen (I think on SO) the use of a function similar to system.time that assesses the time of multiple functions at once and spits out one output. I can't remember what it was and an internet search with the terms I'm using does not yield the response I want.

Anyone know the name/location of the function I'm talking about?

like image 629
Tyler Rinker Avatar asked Dec 09 '11 01:12

Tyler Rinker


1 Answers

You want the rbenchmark package and its benchmark function. (There is also the related and more specialised microbenchmark package.)

Here is the beginning of the example section:

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.286        1       0.2     0.08          0         0

bnchmrR> # Example 2
bnchmrR> # A call to benchmark with two named expressions and three replication
bnchmrR> # counts, output sorted by the replication counts and then by the 
bnchmrR> # elapsed time:
bnchmrR> means.rep = function(n, m)
bnchmr+    mean(replicate(n, rnorm(m)))

bnchmrR> means.pat = function(n, m)
bnchmr+    colMeans(array(rnorm(n*m), c(m, n)))

bnchmrR> benchmark(
bnchmr+    rep=means.rep(100, 100),
bnchmr+    pat=means.pat(100, 100),
bnchmr+    replications=10^(1:3),
bnchmr+    order=c('replications', 'elapsed'))
  test replications elapsed  relative user.self sys.self user.child sys.child
4  pat           10   0.011   1.00000      0.02        0          0         0
1  rep           10   0.015   1.36364      0.02        0          0         0
5  pat          100   0.107   9.72727      0.10        0          0         0
2  rep          100   0.155  14.09091      0.16        0          0         0
6  pat         1000   1.073  97.54545      1.07        0          0         0
3  rep         1000   1.553 141.18182      1.55        0          0         0
like image 104
Dirk Eddelbuettel Avatar answered Oct 29 '22 03:10

Dirk Eddelbuettel