3482
правки
Изменения
м
→Компиляция функций и выражений
== Компиляция функций и выражений ==
Компиляция функций осуществляется с помощью функции <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>}}
== Компиляция скриптов ==