朱莉娅的速度优于R

时间:2017-04-24 22:33:47

标签: r julia rcpp

我一直在使用R进行公司财务和资产定价研究,并且由于我在数学和统计学方面的背景,我非常喜欢。到目前为止,我在R中遇到了两个主要的约束。第一个是处理大数据文件,但我有点通过将R与PostgreSQL和Spark结合起来来避开它,我相信我可以从高性能计算机或AWS云中获得更多内存在将来。第二个约束是执行速度(对于通过刻度安全报价数据处理滴答很重要),我被推荐Julia比R具有巨大的速度优势。我的问题是,由于Rcpp提供了非常快的执行速度,Julia的速度优势仍然存在保持?我在考虑是否应该学习朱莉娅。

此外,R提供了与WRDS,Quandl,TrueFX和TAQ完美的数据库连接,我真的习惯了Hadley Wickham风格的数据清理。作为一名学者,我有点像R得到了像Journal of Stat Software这样的同行评审期刊的支持。我会试试朱莉娅,看看它是如何运作的。感谢所有的答案和评论!

1 个答案:

答案 0 :(得分:5)

Rcpp和朱莉娅最终会让你到达同一个地方。事实上,类型稳定的Julia将编译为与clang编译的C ++基本相同的LLVM IR。设计方面没有什么可以阻止它相同(在类型稳定的情况下),除了一些遗漏的优化,因为语言是年轻的(例如,@fastmath默认情况下不添加FMA,所以你我必须自己添加FMA调用,而我相信使用fastmath编译的C ++将是FMA)。但是在给定类型稳定性的情况下,您可以检查@code_llvm and @code_native输出相同的代码。

但是,Rcpp会要求您编写一堆C ++代码并测试/维护该代码以及R代码。 C / C ++的级别要低得多,维护起来也比较困难(“双语问题”)。如果你选择和朱莉娅一起去,你可以在朱莉娅写下这一切。这是主要的区别。

(至于整个“Julia比C慢2倍”,这里应该提到。通常这是由于类型不稳定代码的一小部分,而不是用@inbounds关闭数组边界检查(来自注释的语言比较显然不会这样做,这可能会导致紧密循环中的相当大的差异),并依赖于矢量化样式(la R / MATLAB / Python)。最后一部分在Julia v0中要好得多。 6,但它总是比循环成本小。最后,它是选择加入/选择退出的选择,用于简洁的代码和额外的安全检查,这会导致差异。)