I'm using refClass for a complex multi-directional tree structure with possibly 
100,000s of nodes.  The refClass design is very impressive and I'd love to use 
it, but I've found that the size of refClass instances are very large and 
creation time is slow.  For example, below is a RefClass and normal S4 class.  
The RefClass requires about 4KB per instance vs 500B for the S4 class -- based 
on adding the Ncells and Vcells of used memory reported by gc().  And 
instantiation is more than twice as slow for a RefClass.  (R 2.14.2)

Anyone have thoughts on this and whether there's any hope for improving 
resources on either front?  

I wonder what others are doing.  I've been thinking about lightweight 
alternative implementations, but nothing particularly elegant has come to mind, 
yet!

Thanks!


simple <- 
  setRefClass('simple', 
              fields = list(a = "character", b="numeric")
)
gc()
system.time(simple.list <- lapply(1:100000, function(i) { 
simple$new(a='foo',b=i) }))
gc()

setClass('simple2', representation(a="character",b="numeric"))
setMethod("initialize", "simple2",
          function(.Object, a, b) {
            .Object@a <- a
            .Object@b <- b
            .Object
          })

gc()
system.time(simple2.list <- lapply(1:100000, function(i) { 
new('simple2',a='foo',b=i) }))
gc()

______________________________________________
R-help@r-project.org mailing list
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