I use microbenchmark to time various of my code segments and find it very useful. However, by accident I called it with the expression I wanted to time quoted. This simply measured the time to evaluate the quote. The following illustrates the difference. When explained, the issue is obvious, but I spun some wheels for a while and the example may help others. > rm(list=ls()) # clear workspace > genrose.g <- function(x, gs=100){ > # vectorized gradient for genrose.f > n <- length(x) > gg <- as.vector(rep(0, n)) > tn <- 2:n > tn1 <- tn - 1 > z1 <- x[tn] - x[tn1]^2 > z2 <- 1 - x[tn] > gg[tn] <- 2 * (gs * z1 - z2) > gg[tn1] <- gg[tn1] - 4 * gs * x[tn1] * z1 > return(gg) > } > require(microbenchmark) > trep=1000 > xx<-rep(pi/2,20) > atq<-microbenchmark("genrose.g(xx)", times=trep) > print(atq) > at<-microbenchmark(genrose.g(xx), times=trep) > print(at) which gives > source("tmbench.R") Unit: nanoseconds expr min lq median uq max neval "genrose.g(xx)" 70 420 489 489 12851 1000 Unit: microseconds expr min lq median uq max neval genrose.g(xx) 47.982 49.868 50.426 51.404 3523.566 1000 Thanks to Olaf Mersmann for a quick response to set me straight. He pointed out that sometimes one wants to measure the time to evaluate a character string, as in the following. > microbenchmark(NULL, "", "asdf", "12345678901234567890", times=1000L) Unit: nanoseconds expr min lq median uq max neval NULL 24 25 28 29 161 1000 "" 24 25 28 29 121 1000 "asdf" 24 25 28 29 161 1000 "12345678901234567890" 24 28 28 29 542 1000 John Nash