假设有人使用NumericVector
和其他用途vector<double>
在他们的 Rcpp 代码中。两种用法之间是否存在显着差异,特别是在性能方面?
一般来说,是的。
所有 Rcpp(11) 类型都是围绕底层的“瘦代理对象”(我们在多个地方、演讲、幻灯片、我的书等中讨论过)SEXP
对象。这意味着当您从 R 转到 C++ 以及从 C++ 返回到 R 时,不会创建任何副本。
使用标准 C++ 类型,例如std::vector<T>
但是,通常需要副本。
所以你应该很容易地看到一些简单的测试脚本的差异N
增加足够。
就我个人而言,我通常喜欢“干净”地使用 C++/STL 类型来编写“感觉更像 C++ 风格”的代码,但仍要注意性能损失。通常这并不重要,因为 C++ 解决方案比纯 R 解决方案中替换的解决方案更快。
但你的问题是,一个是否支配另一个,另一个显然是肯定的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)