NumericVector和vector <double>之间是否存在性能差异?</double>

时间:2014-11-20 04:29:10

标签: r rcpp rcpp11

假设一个人使用NumericVector而另一个人在他们的Rcpp代码中使用vector<double>。两种用法之间是否存在显着差异,特别是在性能方面?

1 个答案:

答案 0 :(得分:10)

一般来说,是的。

所有Rcpp(11)类型都是&#34;瘦代理对象&#34; (我们在几个地方谈论,谈话,幻灯片,我的书,......)围绕基础SEXP对象。这意味着当你从R到C ++,以及当你从C ++回到R时,没有复制。

但是,使用标准C ++类型(如std::vector<T>)通常需要副本。

因此,当N增加足够的时候,你应该很容易看到一些琐碎的测试脚本的差异。

就个人而言,我一般都喜欢&#34;清洁&#34;使用C ++ / STL类型代码,感觉更多C ++ - ish&#34;但仍然意识到性能损失。通常它并不重要,因为C ++解决方案比纯R解决方案中的替换更快。

但你的问题是,如果一个支配另一个,另一个是明确的是。