Рассмотрим это сравнение:
require(Rcpp)
require(microbenchmark)
cppFunction('int cppFun (int x) {return x;}')
RFun = function(x) x
x=as.integer(2)
microbenchmark(RFun=RFun(x),cppFun=cppFun(x),times=1e5)
Unit: nanoseconds
expr min lq mean median uq max neval cld
RFun 302 357 470.2047 449 513 110152 1e+06 a
cppFun 2330 2598 4045.0059 2729 2879 68752603 1e+06 b
cppFun
кажется медленнее, чем RFun
. Почему это так? Отличается ли время вызова функций? Или это сами функции отличаются временем выполнения? Пришло ли время для передачи и возврата аргументов? Есть ли какое-то преобразование или копирование данных, о которых я не знаю, когда данные передаются (или возвращаются) cppFun
?
cppFun
, пишется.Primitive(".Call")(<pointer: 0x1153d4cd0>, x)
. Почему для вызова такой функции требуется больше времени? - person Remi.b   schedule 29.09.2016