Timing foe RNGs


  
library(RcppOctave)
require(rbenchmark) # to benchmark examples
## define a Gamma RNG draw function
o_source(text=" function x = orndg(a, b, n) x = b * randg(a, n, 1); end ")
## define a Normal RNG draw function
o_source(text=" function x = orndn(n) x = randn(n,1); end ")
N <- 500
set.seed(42) # reset RNG
x1 <- c(.O$orndg(9,1,N))
set.seed(42) # reset RNG
y1 <- rgamma(N,9,1)
stopifnot(all.equal(x1, y1))
res <- benchmark(.O$orndg(9,1,N), rgamma(N,9,1), o_rgamma(9,N,1), columns = c("test", "replications", "elapsed", "relative"), order="relative", replications=1000)
print(res)
test replications elapsed relative 2 rgamma(N, 9, 1) 1000 0.072 1.000 3 o_rgamma(9, N, 1) 1000 0.807 11.208 1 .O$orndg(9, 1, N) 1000 1.900 26.389
set.seed(42) # reset RNG
x1 <- c(.O$orndn(N,1))
set.seed(42) # reset RNG
y1 <- rnorm(N)
stopifnot(all.equal(x1, y1))
res <- benchmark(.O$orndn(N), rnorm(N), o_rnorm(N,1), columns = c("test", "replications", "elapsed", "relative"), order="relative", replications=1000)
print(res)
test replications elapsed relative 2 rnorm(N) 1000 0.057 1.000 3 o_rnorm(N, 1) 1000 0.092 1.614 1 .O$orndn(N) 1000 1.913 33.561