Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way to speed up the library loading in R?

I have a Rscript that will load ggplot2 in its first line.

Though loading a library doesn't take much time, as this script may be executed in command line for millions of times so the speed is really important for me.

Is there a way to speed up this loading process?

like image 701
Hanfei Sun Avatar asked May 30 '12 21:05

Hanfei Sun


2 Answers

Don't restart -- keep a persistent R session and just issue requests to it. Something like Rserve can provide this, and for example FastRWeb uses it very well -- with millsecond round-trips for chart generation.

like image 146
Dirk Eddelbuettel Avatar answered Sep 25 '22 03:09

Dirk Eddelbuettel


As an addition to @MikeDunlavey's answer:

Actually, both library and require check whether the package is already loaded. Here are some timings with microbenchmark I get:

> microbenchmark (`!` (exists ("qplot")), 
                  `!` (existsFunction ('qplot')),  
                  require ('ggplot2'),  
                  library ('ggplot2'),   
                  "package:ggplot2" %in% search ())

## results reordered with descending median:
Unit: microseconds
                             expr     min       lq   median       uq     max
3              library("ggplot2") 259.720 262.8700 266.3405 271.7285 448.749
1        !existsFunction("qplot")  79.501  81.8770  83.7870  89.2965 114.182
5              require("ggplot2")  12.556  14.3755  15.5125  16.1325  33.526
4 "package:ggplot2" %in% search()   4.315   5.3225   6.0010   6.5475   9.201
2                !exists("qplot")   3.370   4.4250   5.0300   6.2375  12.165

For comparison, loading for the first time:

> system.time (library (ggplot2))
   User      System verstrichen 
  0.284       0.016       0.300 

(these are seconds!)

In the end, as long as the factor 3 = 10 μs between require and "package:ggplot2" %in% search() isn't needed, I'd go with require, otherwise witht the %in% search ().

like image 37
cbeleites unhappy with SX Avatar answered Sep 23 '22 03:09

cbeleites unhappy with SX