Изменения

R:Оптимизация/Компиляция в байт-код

1361 байт добавлено, 10:08, 4 мая 2014
м
Компиляция функций и выражений
== Компиляция функций и выражений ==
 
Компиляция функций осуществляется с помощью функции <code>cmpfun()</code>. Возьмём пример из документации к функции <code>cmpfun()</code>, вкотором предлагается сравнить производительность различных реализаций функции <code>lapply()</code>, а также их скомпилированных версий:
 
{{r-code|code=<nowiki># old R version of lapply
la1 <- function(X, FUN, ...) {
FUN <- match.fun(FUN)
if (!is.list(X))
X <- as.list(X)
rval <- vector("list", length(X))
for(i in seq(along = X))
rval[i] <- list(FUN(X[[i]], ...))
names(rval) <- names(X) # keep `names' !
return(rval)
}
# a small variation
la2 <- function(X, FUN, ...) {
FUN <- match.fun(FUN)
if (!is.list(X))
X <- as.list(X)
rval <- vector("list", length(X))
for(i in seq(along = X)) {
v <- FUN(X[[i]], ...)
if (is.null(v))
rval[i] <- list(v)
else
rval[[i]] <- v
}
names(rval) <- names(X) # keep `names' !
return(rval)
}</nowiki>}}
 
Скомпилируем эти функции в бат-код:
 
{{r-code|code=<nowiki>> la1c <- cmpfun(la1)
> la2c <- cmpfun(la2)
> lapplyc <- compfun(lapply)</nowiki>}}
== Компиляция скриптов ==