朱莉娅的速度优于R

Tua*_* Le -3 r rcpp julia

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

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

Chr*_*kas 5

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

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

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

  • 这也是基于意见的.你会看到"一种语言为所有人"的优势,我看到R和C++的大量(优秀)包和库的优势.用户可以选择. (4认同)
  • 我注意到了意见的确切位置.我说的一个意见是我发现不需要使用多种语言.剩下的不是意见,这只是朱莉娅与Rcpp如何运作的事实.但是,是的,这个问题徘徊于意见之中. (2认同)
  • @TouLe评论不是为了聊天.如果您对Julia有任何疑问并想聊聊,我会推荐Julia Gitter频道:https://gitter.im/JuliaLang/julia (2认同)