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") + [EMAIL PROTECTED] <- "vector" + [EMAIL PROTECTED] <- 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 [EMAIL PROTECTED] 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