Re: [Rd] S3/S4 classes performance comparison

From: Eric Lecoutre <lecoutre_at_stat.ucl.ac.be>
Date: Sat 15 Jan 2005 - 03:30:08 EST

Hi again,

Thanks for that suggestion: I have tested it at higher scale for my application and it does indeed increase performance. But not sufficient for my application: it still remains a factor of nearly 25!

Anyway, I think I will come back to S3 classes for that project, which will involve a lot of different classes (and nested objects). In some sense, it is a shame: I clearly understand that S4 classes are well-founded and can only encourage R developpers to go on with their excellent work.
In fact, the problem may be you do too much great work on core R: the manipulations with pure S3 classes are so fast!

Best wishes,

Eric

>my experience was that calling the constructor _with_ data is slow, so the
>following performs a little bit better
>
>R> S3content <- function(obj=NULL,add1=NULL,add2=NULL,type="",...){
>+ out <- list(content=obj,add1=add2,add2=add2,type=type)
>+ class(out) <- "S3Content"
>+ return(out)
>+ }
>R>
>R> S3vector <- function(vec,...){
>+ out <- S3content(obj=vec,type="Vector",...)
>+ class(out) <- "S3Vector"
>+ return(out)
>+ }
>R>
>R>
>R> ### S4 classes
>R>
>R>
>setClass("S4content",representation(content="ANY",add1="ANY",add2="ANY",type="character"))
>[1] "S4content"
>R>
>R> S4vector <- function(vec,...){
>+ RET <- new("S4content")
>+ RET@type <- "vector"
>+ RET@content <- vec
>+ RET
>+ }
>R>
>R> test <- rnorm(10000)
>R> gc()
> used (Mb) gc trigger (Mb)
>Ncells 156181 4.2 350000 9.4
>Vcells 67973 0.6 786432 6.0
>R> system.time(lapply(test,S3vector))
>[1] 0.23 0.00 0.23 0.00 0.00
>R> gc()
> used (Mb) gc trigger (Mb)
>Ncells 156314 4.2 350000 9.4
>Vcells 68005 0.6 786432 6.0
>R> system.time(lapply(test,S4vector))
>[1] 6.04 0.00 6.04 0.00 0.00
>R>
>
>Torsten

Eric Lecoutre
UCL / Institut de Statistique
Voie du Roman Pays, 20
1348 Louvain-la-Neuve
Belgium

tel: (+32)(0)10473050
lecoutre@stat.ucl.ac.be
http://www.stat.ucl.ac.be/ISpersonnel/lecoutre

If the statistics are boring, then you've got the wrong numbers. -Edward Tufte



R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Sat Jan 15 02:53:42 2005

This archive was generated by hypermail 2.1.8 : Sat 15 Jan 2005 - 03:21:51 EST