속도 문제르 R코드를 Rcpp로 옮기면서 가장 많이 했던 고민은 이거다.
R에서 이미 구현되어 있는 내장함수를 Cpp로 새로 구현하였을 때, 그 함수가 이미 구현되어 있는 R함수보다 안정적이게 작성하기란 어렵다.... (특히, Optimize 함수 같은 거..)
Rcpp에선 R의 특정 패키지에 구현되어 있는 함수를 불러와서 쓸 수 있는 기능이 있어 그 기능을 애용하게 되었다.
R내장함수 Rcpp에서 불러오기: Optimize 예시
2023.09.17 - [R Programming/Rcpp] - [Rcpp] Rcpp에서 R함수 사용하기 (Optimize 함수 예시)
하지만, 작성하면서도 고민되었던 점은 속도 문제로 Rcpp로 옮겨왔는데, Rcpp 자체에서 R 내장함수를 불러와서 작동시키면 오히려 속도가 더 오래 걸리는 게 아닐까였다.
그래서 nlm과 optimize 두 함수를 이용하여 직접 평가해 보기로 했다.
속도 평가할 땐 microbenchmark 패키지를 사용하였다.
R에서 작동한 nlm, optimize, 그리고 Rcpp에서 불러온 nlm, optimize 총 4가지의 함수를 비교하였다.
이때, 최적화하고자 하는 함수(I_pll)는 R과 Rcpp에서 각각 정의하여 사용하였다.
고민했던 바와 다르게, Rcpp에서 R내장함수를 불러와서 사용해도 R보다 Rcpp의 속도가 훨씬 빠르다.
'R Programming > Rcpp' 카테고리의 다른 글
[Rcpp] building shared library 문제 해결: 환경변수 추가 (0) | 2023.10.26 |
---|---|
Parallel 연산에서 Rcpp::function 호출하기 (1) | 2023.10.06 |
[Rcpp] Rcpp에서 R함수 사용하기 (Optimize 함수 예시) (0) | 2023.09.17 |