2017-04-24 4 views
-3

저는 기업 금융 및 자산 가격 책정에 대한 연구에 R을 사용하고 있으며 수학 및 통계에 관한 저의 배경 때문에 R이 정말 좋아요. 지금까지 R에서 2 가지 주요 제약이있었습니다. 첫 번째는 큰 데이터 파일을 처리하는 것이지만 R을 PostgreSQL 및 Spark와 결합하여 우회하는 방식입니다. 고성능 컴퓨터 또는 AWS 클라우드에서 더 많은 RAM을 얻을 수 있다고 생각합니다. 미래에. 두 번째 제약은 틱 보안 쿼리 데이터로 틱을 처리하는 데 중요한 속도를 실행하는 것입니다. Julia는 R보다 속도면에서 큰 이점이 있습니다. 제 질문은 Rcpp가 매우 빠른 실행을 제공하기 때문에 Julia의 속도 이점은 여전히 보류? 줄리아를 배워야하는지 생각 중입니다.R보다 훨씬 빠른 Julia의 속도 이점

또한 R은 WRDS, Quandl, TrueFX 및 TAQ와 완벽한 데이터베이스 연결을 제공하며 Hadley Wickham 스타일 데이터 정리에 실제로 사용됩니다. 학계에서 나는 R이 Stat Software의 저널과 같은 동료 리뷰 저널의지지를받는 ​​것과 비슷합니다. 나는 줄리아를 시험해보고 그것이 어떻게 작동하는지 볼 것입니다. 모든 답변과 의견에 감사드립니다!

+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를 추가하지 않으므로 fastmath로 컴파일 된 C++이 FMA 일 것이라고 믿는 반면, FMA는 스스로 호출합니다.) 그러나 주어진 안정성을 고려할 때 @code_llvm and @code_native이 동일한 코드를 출력하는지 확인할 수 있습니다.

그러나 Rcpp는 R 코드와 함께 C++ 코드를 작성하고 테스트/유지 관리해야합니다. C/C++은 훨씬 낮은 수준이며 유지하기가 더 어려울 수 있습니다 ("두 언어 문제"). Julia와 함께 가고 싶다면 Julia에서 모두 쓸 수 있습니다. 그것이 가장 큰 차이점입니다.

("Julia는 C보다 2 배 느립니다"라고 일반적으로 언급해야합니다. 일반적으로이 코드는 타입이 불안정한 코드의 작은 부분을 가지고 있기 때문에 @inbounds으로 배열 경계를 검사하지 않습니다. 주석은이 작업을 수행하지 않음으로써 타이트한 루프에서 큰 차이를 유발할 수 있음), 벡터화 스타일 (la R/MATLAB/Python)에 의존합니다. 마지막 부분은 Julia v0.6에서 훨씬 뛰어 났지만 그것은 항상 반복에 비해 약간의 비용이들 것입니다. 결국, 간결한 코드 및 차이를 야기하는 추가 안전성 체크를위한 opt-in/opt-out 선택입니다.)

+4

그 의견을 기반으로합니다. 당신은 "모두를위한 하나의 언어"에서 장점을 보았고, R 및 C++에 대한 많은 훌륭한 패키지와 라이브러리에서 장점을 발견합니다. 사용자는 선택의 여지가 있습니다. –

+2

나는 그 의견이 어디에 있는지 정확히 지적했다.제가 말한 한 의견은 여러 언어를 불필요하게 사용한다는 것입니다. 나머지는 의견이 아니며 Julia와 Rcpp가 어떻게 작동하는지에 대한 사실입니다. 그러나 그렇습니다,이 질문은 의견을 향해 나아집니다. –

+1

진정. 나는 심지어 당신을 downvote하지 않았다, 나는 단지 나의 인생에서 1 분을 낭비하는 것을 귀찮게했다. 내 생각에 당신의 포스트가 SO의 품질 기준에 정확히 부합하지 않는다고 말하고있다. 인생은 계속됩니다, –