加速异常缓慢的 Rcpp 函数
Speeding up a strangely slow Rcpp function
我想使用 Rcpp 重写一个昂贵的 R 函数。由于我是这个主题的新手,所以我尝试了一些非常简单的东西。
我写了以下函数:
Rcpp::cppFunction('
std::vector<int> test_C(double a) {
std::vector<int> indices;
indices.reserve(2);
indices.push_back(a);
indices.push_back(a);
return (indices);
}
')
现在,就结果而言,一切都很好。但它需要 0.1 秒(对于这个任务来说当然太多了)。以前我有
Rcpp::cppFunction('
NumericVector test_C(double a) {
NumericVector indices(2);
indices[0] = a;
indices[1] = a;
return (indices);
}
')
同样慢。我怀疑这是我的系统故障。我在 的答案中尝试了 Rcpp 代码,它计算数字向量 v(在我的测试中长度为 10e7)和双 a 的 [v > a][1] 并且它工作得非常非常快。
任何提示我做错了什么?
你是不是也碰巧测量了编译?
R> library(rbenchmark)
R> benchmark(test_C(2))[1:4]
test replications elapsed relative
1 test_C(2) 100 0.001 1
R>
我想使用 Rcpp 重写一个昂贵的 R 函数。由于我是这个主题的新手,所以我尝试了一些非常简单的东西。 我写了以下函数:
Rcpp::cppFunction('
std::vector<int> test_C(double a) {
std::vector<int> indices;
indices.reserve(2);
indices.push_back(a);
indices.push_back(a);
return (indices);
}
')
现在,就结果而言,一切都很好。但它需要 0.1 秒(对于这个任务来说当然太多了)。以前我有
Rcpp::cppFunction('
NumericVector test_C(double a) {
NumericVector indices(2);
indices[0] = a;
indices[1] = a;
return (indices);
}
')
同样慢。我怀疑这是我的系统故障。我在
任何提示我做错了什么?
你是不是也碰巧测量了编译?
R> library(rbenchmark)
R> benchmark(test_C(2))[1:4]
test replications elapsed relative
1 test_C(2) 100 0.001 1
R>