Sometimes you can cheat a little bit: you can make R run faster without tuning your code. This section shows two ways to do that.

Normally, R is an interpreted language.

But beginning in R 2.13.0, R has included a byte code compiler to speed up computations. As an example, let’s consider the vector of squares function that we used above:

>naive.vector.of.squaresfunction(n) { v <- 1:n for (i in 1:n) v[i] <- v[i]^2 } >system.time(naive.vector.of.squares(1000000))user system elapsed 3.025 0.016 3.036

Now we’ll use the `cmpfun`

function to create a compiled version of this function
and then test its performance.

>library(compiler)>compiled.naive.vector.of.squares <- cmpfun(naive.vector.of.squares)>system.time(compiled.naive.vector.of.squares(1000000))user system elapsed 0.637 0.005 0.636

As you can see, the compiled version of this function runs much faster. Of course, it still runs more slowly than the vector operation:

`> `**system.time(better.vector.of.squares(1000000))**
user system elapsed
0.008 0.000 0.008

And compiling the vector operation does not make a huge difference:

>better.vector.of.squares.compiled <- cmpfun(better.vector.of.squares)>system.time(better.vector.of.squares.compiled(1000000))user system elapsed 0.007 0.000 0.007

But that doesn’t mean you shouldn’t try the compiler for your problem. It’s one of the simplest tricks for speeding up your code. (It’s even easier than ordering a new, faster server. And it’s cheaper.) ...

Start Free Trial

No credit card required