The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
Using Rcpp::Timer together with
Rcpp::sourceCpp is similar to using it in an R package
(c.f. vignette("packages")). However, instead of linking to
rcpptimer in the DESCRIPTION file, we declare this
dependency in the C++ file. We can do this by adding
//[[Rcpp::depends(rcpptimer)]]. In the following, find a
simple example file called ‘fibonacci_omp.cpp’:
// fibonacci_omp.cpp
//[[Rcpp::depends(rcpptimer)]]
#include <rcpptimer.h>
long int fib(long int n)
{
return ((n <= 1) ? n : fib(n - 1) + fib(n - 2));
}
//[[Rcpp::export]]
std::vector<long int> fibonacci_omp(std::vector<long int> n)
{
Rcpp::Timer timer;
// This scoped timer measures the total execution time of 'fibonacci'
Rcpp::Timer::ScopedTimer scpdtmr(timer, "fib_body");
std::vector<long int> results = n;
#pragma omp parallel for
for (unsigned int i = 0; i < n.size(); ++i)
{
timer.tic("fib_" + std::to_string(n[i]));
results[i] = fib(n[i]);
timer.toc("fib_" + std::to_string(n[i]));
}
return (results);
}Place that file in your working directory and run:
This will compile the C++ code and load the function
fibonacci_omp into your R environment. You can now call it
with fibonacci_omp(n = rep(20:25, 10)) and observe the
timings by executing print(times).
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.