[Rd] memory usage of S4 methods
Prof Brian Ripley
ripley at stats.ox.ac.uk
Sat Aug 7 15:33:15 CEST 2004
On Sat, 7 Aug 2004, Thomas König wrote:
> I have some problems with the memory usage of S4-generics. For example, I
> observed the following behaviour:
> > gc()
> used (Mb) gc trigger (Mb)
> Ncells 432091 11.6 531268 14.2
> Vcells 116052 0.9 786432 6.0
> > setClass("A",representation(x="numeric"));
> [1] "A"
> > setClass("B",representation(x="numeric"));
> [1] "B"
> > f.default <- function(a,b,c,d,e,f,g,h,i,j,k,l,m)
> + {
> + res <- standardGeneric("f");
> + return(res);
> + }
> > f.A <- function(a)
> + {
> + print("f.A");
> + return(0);
> + }
> > f.AB <- function(a,b)
> + {
> + print("f.B");
> + return(0);
> + }
> > setGeneric("f",f.default)
> [1] "f"
> >
> setMethod("f",signature=signature("A","B","missing","missing","missing","missing","missing","missing","missing","missing","missing","missing","missing"),f.AB);
> [1] "f"
> >
> setMethod("f",signature=signature("A","missing","missing","missing","missing","missing","missing","missing","missing","missing","missing","missing","missing"),f.A);
> [1] "f"
> > gc()
> used (Mb) gc trigger (Mb)
> Ncells 1579264 42.2 3708127 99.1
> Vcells 1558026 11.9 4232140 32.3
> > R.version
> _
> platform i686-pc-linux-gnu
> arch i686
> os linux-gnu
> system i686, linux-gnu
> status alpha
> major 1
> minor 9.1
> year 2004
> month 05
> day 25
> language R
>
> More than 100 MB for 2 classes and 2 generics? Is this correct?
No: you are not reading gc() output correctly. Please read its help
page, or even the output (`used' is what is used).
Please do not send reports on alpha pre-releases of released versions:
see the posting guide. No one will have that version to hand to check
what you are doing. (I might have checked the released version if you
had provided code that could be pasted in, but you made it unnecessarily
hard, including using lines that the MUA has to break.)
The issue appears to be your attempt to set methods on a very long list of
arguments. What practical use is that? I think you probably only want to
set them on two arguments.
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-devel
mailing list