Dear all

I was thinking about efficient reading data into R and tried several ways to 
test if load(file.Rdata) or readRDS(file.rds) is faster. The files file.Rdata 
and file.rds contain the same data, the first created with save(d, ' 
file.Rdata', compress=F) and the second with saveRDS(d, ' file.rds', 
compress=F).

First I used the function microbenchmark() and was a astonished about the max 
value of the output.

FIRST TEST:
> library(microbenchmark)
> microbenchmark(
+   n <- readRDS('file.rds'),
+   load('file.Rdata')
+ )
Unit: milliseconds
              expr                     min                lq                    
   mean                    median                uq                           
max                      neval
n <- readRDS(fl1)        106.5956      109.6457         237.3844              
117.8956              141.9921              10934.162           100
         load(fl2)                  295.0654      301.8162        335.6266      
        308.3757              319.6965              1915.706              100

It looks like the max value is an outlier.

So I tried:
SECOND TEST:
> sapply(1:10, function(x) system.time(n <- readRDS('file.rds'))[3])
elapsed               elapsed               elapsed               elapsed       
        elapsed               elapsed               elapsed               
elapsed                 elapsed               elapsed
  10.50                   0.11                       0.11                       
0.11                       0.10                       0.11                      
 0.11                       0.11                       0.12                     
  0.12
> sapply(1:10, function(x) system.time(load'flie.Rdata'))[3])
elapsed               elapsed               elapsed               elapsed       
        elapsed               elapsed               elapsed               
elapsed                 elapsed               elapsed
   1.86                    0.29                       0.31                      
 0.30                       0.30                       0.31                     
  0.30                       0.29                       0.31                    
   0.30

Which confirmed my suspicion; the first time loading the data takes much longer 
than the following times. I suspect that this has something to do how the data 
is assigned and that R doesn't has to 'fully' read the data, if it is read the 
second time.

So the question remains, how can I make a realistic benchmark test? From the 
first test I would conclude that reading the *.rds file is faster. But this 
holds only for a large number of neval. If I set times = 1 then reading the 
*.Rdata would be faster (as also indicated by the second test).

Thanks for any help or comments.

Kind regards

Raphael
------------------------------------------------------------------------------------
Raphael Felber, PhD
Scientific Officer, Climate & Air Pollution

Federal Department of Economic Affairs,
Education and Research EAER
Agroscope
Research Division, Agroecology and Environment

Reckenholzstrasse 191, CH-8046 Z�rich
Phone +41 58 468 75 11
Fax     +41 58 468 72 01
raphael.fel...@agroscope.admin.ch<mailto:raphael.fel...@agroscope.admin.ch>
www.agroscope.ch<http://www.agroscope.ch/>


        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to