Aliases: compile cmpfun cmpfile loadcmp disassemble enableJIT compilePKGS getCompilerOption setCompilerOptions
Keywords: programming
### ** Examples oldJIT <- enableJIT(0) # a simple example f <- function(x) x+1 fc <- cmpfun(f) fc(2)
[1] 3
disassemble(fc)
list(.Code, list(12L, GETVAR.OP, 1L, LDCONST.OP, 3L, ADD.OP, 0L, RETURN.OP), list(x + 1, x, structure(c(7L, 6L, 7L, 20L, 6L, 20L, 7L, 7L), class = "srcref"), 1, structure(c(NA, 1L, 1L, 3L, 3L, 0L, 0L, 0L), class = "expressionsIndex"), structure(c(NA, 2L, 2L, 2L, 2L, 2L, 2L, 2L), class = "srcrefsIndex")))
# 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) } # Compiled versions la1c <- cmpfun(la1) la2c <- cmpfun(la2) # some timings x <- 1:10 y <- 1:100 ## No test: system.time(for (i in 1:10000) lapply(x, is.null))
user system elapsed 0.040 0.000 0.043
system.time(for (i in 1:10000) la1(x, is.null))
user system elapsed 0.134 0.000 0.148
system.time(for (i in 1:10000) la1c(x, is.null))
user system elapsed 0.086 0.000 0.099
system.time(for (i in 1:10000) la2(x, is.null))
user system elapsed 0.148 0.000 0.162
system.time(for (i in 1:10000) la2c(x, is.null))
user system elapsed 0.067 0.000 0.077
system.time(for (i in 1:1000) lapply(y, is.null))
user system elapsed 0.026 0.000 0.028
system.time(for (i in 1:1000) la1(y, is.null))
user system elapsed 0.085 0.000 0.096
system.time(for (i in 1:1000) la1c(y, is.null))
user system elapsed 0.046 0.000 0.051
system.time(for (i in 1:1000) la2(y, is.null))
user system elapsed 0.100 0.000 0.105
system.time(for (i in 1:1000) la2c(y, is.null))
user system elapsed 0.031 0.000 0.031
## End(No test) ## Don't show: for (i in 1:10000) lapply(x, is.null) for (i in 1:10000) la1(x, is.null) for (i in 1:10000) la1c(x, is.null) for (i in 1:10000) la2(x, is.null) for (i in 1:10000) la2c(x, is.null) for (i in 1:1000) lapply(y, is.null) for (i in 1:1000) la1(y, is.null) for (i in 1:1000) la1c(y, is.null) for (i in 1:1000) la2(y, is.null) for (i in 1:1000) la2c(y, is.null) ## End(Don't show) enableJIT(oldJIT)
[1] 0