Examples for 'compiler::compile'


Byte Code Compiler

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

[Package compiler version 4.2.3 Index]