This R Package provides Rcpp bindings for cpptimer, a simple tic-toc
class for timing C++ code. It’s not just simple, it’s blazing fast! This
sleek tic-toc timer class supports nested and overlapping timers and
OpenMP parallelism. It boasts a nanosecond-level time resolution.
Results (with summary statistics) are automatically passed back to R as
a data.frame.
Install rcpptimer from CRAN.
install.packages("rcpptimer")
Here is a straightforward example of using the
Rcpp::Timer
with Rcpp::cppFunction:
::cppFunction("
Rcppdouble demo_rnorm()
{
Rcpp::Timer timer;
timer.tic();
double x = rnorm(1, 1)[0];
timer.toc();
return(x);
}",
depends = "rcpptimer"
)
demo_rnorm()
The timer object will automatically write its result to the R environment:
print(times)
Microseconds SD Min Max Count3.972 0 3.972 3.972 1 tictoc
Check out the Documentation for:
Rcpp::sourceCpp
Processes taking less than a nanosecond cannot be timed.
Unmatched .tic()
and .toc()
calls do not
raise errors at compile time. However, they throw warnings at
runtime.
This package (and the underlying cpptimer class) was inspired by zdebruine’s RcppClock. I used that package a lot and wanted to add OpenMP support, alter the process of calculating summary statistics, and apply a series of other adjustments. I hope you find it useful.