假设一个用途NumericVector
和另一个用途vector<double>
在他们的 Rcpp 代码中。这两种用法之间是否存在显着差异,尤其是在性能方面?
问问题
733 次
1 回答
10
一般来说,是的。
所有的 Rcpp(11) 类型都是围绕底层对象的“瘦代理对象”(我们在几个地方、演讲、幻灯片、我的书……)SEXP
。这意味着当您从 R 转到 C++ 时,以及从 C++ 回到 R 时,不会进行任何复制。
但是,使用标准 C++ 类型(如std::vector<T>
)通常需要一个副本。
所以你应该很容易看到一些微不足道的测试脚本的差异,因为N
增加得足够多。
就个人而言,我通常喜欢“干净”地使用 C++/STL 类型来处理“感觉更像 C++”但仍然意识到性能损失的代码。通常这并不重要,因为 C++ 解决方案比您在纯 R 解决方案中替换的更快。
但你的问题是,如果一个人支配另一个人,另一个人是肯定的。
于 2014-11-20T04:34:46.290 回答