簡単に使えて,効果もそれなりに見込める
> func <- function(xa, xb) {
+ xab <- integer(length(c(xa, xb))-1)
+ for (i in seq.int(xa))
+ for (j in seq.int(xb))
+ xab[i+j-1] <- xab[i+j-1]+xa[i]*xb[j]
+ return(xab)
+ }
> system.time(a <- func(1:100, 10:200))
ユーザ システム 経過
0.160 0.001 0.159
> library(compiler)
> func2 <- cmpfun(func)
> system.time(b <- func2(1:100, 10:200))
ユーザ システム 経過
0.054 0.002 0.065 # 3 倍速い
> all.equal(a, b)
[1] TRUE