Other Ways to Speed Up R
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.
The R Byte Code Compiler
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.squares function(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.008And 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.) ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access