3482
правки
Изменения
м
→Компиляция функций и выражений
== Компиляция функций и выражений ==
Скомпилировать отдельно взятое выражение можно с помощью функции <code>compile()</code>.
{{r-code|code=<nowiki>> expr <- expression(for (i in x) s <- s + i)
> exprc <- compile(for (i in x) s <- s + i)
> s <- as.double(0)
> x <- as.double(1 : 1000)
> identical(eval(expr), eval(exprc))
[1] TRUE
> microbenchmark(eval(expr), eval(exprc))
Unit: microseconds
expr min lq median uq max neval
eval(expr) 315.05 323.438 329.628 338.978 365.631 100
eval(exprc) 1.58 1.883 2.199 2.482 8.311 100</nowiki>}}
Компиляция функций осуществляется с помощью функции <code>cmpfun()</code>. Возьмём пример из документации к функции <code>cmpfun()</code>, вкотором предлагается сравнить производительность различных реализаций функции <code>lapply()</code>, а также их скомпилированных версий: