2017-04-24 70 views
-3

我一直在使用R進行公司財務和資產定價的研究,並且非常喜歡它,這是由於我在數學和統計方面的背景。到目前爲止,我在R中遇到了兩個主要的限制。第一個是處理大數據文件,但我通過將R與PostgreSQL和Spark結合起來規避了它,我相信我可以從高性能計算機或AWS雲中獲得更多內存在將來。第二個限制是執行速度(對於通過tick安全報價數據來處理tick是很重要的),並且我被推薦爲Julia比R具有巨大的速度優勢。我的問題是,由於Rcpp提供了非常快的執行速度,Julia的速度優勢還是保持?我正在考慮是否應該學習朱莉婭。另外,R提供了與WRDS,Quandl,TrueFX和TAQ的完美數據庫連接,而且我非常習慣於Hadley Wickham樣式的數據清理。作爲一名學術人員,我有點喜歡這樣一個事實,即R得到了Journal of Stat Software等同行評審期刊的支持。我會嘗試茱莉亞,看看它是如何工作的。感謝所有的答案和評論!Julia的速度優勢超過R

+3

這個問題有點過於通用。不過,你可以看看這篇論文:http://economics.sas.upenn.edu/~jesusfv/comparison_languages.pdf。它比較了幾種編程語言(包括Rcpp和Julia)的性能。 – merch

+0

@merch非常感謝。 Rcpp是R環境中最快的方法嗎? –

+2

該語言比較來自Julia的石器時代(v0.2)。我認爲更好的一點是,類型穩定的Julia代碼和Clang編譯的C++一樣快。實際上,它編譯本質上是相同的代碼,所以速度沒有差別。這裏的速度差異可能是由於使用了不同的系統數學庫('log'函數)以及早期的Julia沒有默認使用-O3編譯(現在就是這樣)的事實。 –

回答

5

Rcpp和Julia將最終在性能方面讓你到同一個地方。事實上,類型穩定的Julia將編譯成與clang編譯的C++基本相同的LLVM IR。在設計方面,沒有什麼能夠阻止它與之類似(在類型穩定的情況下),除了一些缺少的優化外,因爲語言很年輕(例如,@fastmath默認不添加FMA,所以您必須自己添加FMA調用,而我相信用fastmath編譯的C++將會FMA)。但是你可以玩弄檢查@code_llvm and @code_native輸出相同的代碼,給定類型的穩定性。

但是,Rcpp會要求您編寫一堆C++代碼並測試/維護該代碼以及您的R代碼。 C/C++的水平低得多,可能會更難以維護(「兩種語言問題」)。如果你選擇和Julia一起去,你可以把它寫在Julia裏。這是主要區別。 (關於整個「Julia比C慢兩倍」,應該在這裏提及,通常是因爲有一小部分類型不穩定的代碼,而不是關閉數組邊界檢查@inbounds這些註釋並沒有這樣做,這可能會導致在緊密的循環中出現很大的差異),並且依賴於矢量化風格(la R/MATLAB/Python)。最後一部分在Julia v0.6中更好,但是它總是會有一個小的循環成本,最後,它是選擇加入/退出選擇的簡潔代碼和額外的安全檢查導致的差異。)

+4

這也是基於意見的。在「一種語言的所有人」中看到了優勢,我發現在R和C++的大量(優秀)軟件包和庫中都有優勢。用戶有一個選擇。 –

+2

我注意到了意見的確切位置。我說的一個觀點是我覺得使用多種語言是不必要的。剩下的不是意見,這只是Julia vs Rcpp的工作原理。但是,這個問題滔滔不絕地提出意見。 –

+1

寒意。我甚至沒有讓你失望,我只是懶得浪費我一生的時間告訴你,你的帖子 - 在我看來 - 並不完全符合SO的質量標準。生活繼續, –