[Rd] object.size vs lobstr::obj_size

Hadley Wickham h@w|ckh@m @end|ng |rom gm@||@com
Fri Mar 27 23:19:21 CET 2020


On Fri, Mar 27, 2020 at 4:01 PM Hervé Pagès <hpages using fredhutch.org> wrote:

>
>
> On 3/27/20 12:00, Hadley Wickham wrote:
> >
> >
> > On Fri, Mar 27, 2020 at 10:39 AM Hervé Pagès <hpages using fredhutch.org
> > <mailto:hpages using fredhutch.org>> wrote:
> >
> >     Hi Tomas,
> >
> >     On 3/27/20 07:01, Tomas Kalibera wrote:
> >      > they provide an over-approximation
> >
> >     They can also provide an "under-approximation" (to say the least)
> e.g.
> >     on reference objects where the entire substance of the object is
> >     ignored
> >     which makes object.size() completely meaningless in that case:
> >
> >         setRefClass("A", fields=c(stuff="ANY"))
> >         object.size(new("A", stuff=raw(0)))      # 680 bytes
> >         object.size(new("A", stuff=runif(1e8)))  # 680 bytes
> >
> >     Why wouldn't object.size() look at the content of environments?
> >
> >
> > As the author, I'm obviously biased, but I do like lobstr::obj_sizes()
> > which allows you to see the additional size occupied by one object given
> > any number of other objects. This is particularly important for
> > reference classes since individual objects appear quite large:
> >
> > A <- setRefClass("A", fields=c(stuff="ANY"))
> > lobstr::obj_size(new("A", stuff=raw(0)))
> > #> 567,056 B
> >
> > But the vast majority is shared across all instances of that class:
> >
> > lobstr::obj_size(A)
> > #> 719,232 B
> > lobstr::obj_sizes(A, new("A", stuff=raw(0)))
> > #> * 719,232 B
> > #> *     720 B
> > lobstr::obj_sizes(A, new("A", stuff=runif(1e8)))
> > #> *     719,232 B
> > #> * 800,000,720 B
>
> Nice. Can you clarify the situation with lobstr::obj_size vs
> pryr::object_size? I've heard of the latter before and use it sometimes
> but never heard of the former before seeing Stefan's post. Then I
> checked the authors of both and thought maybe they should talk to each
> other ;-)
>

pryr is basically retired :) TBH I don't know why I gave up on it, except
lobstr is a cooler name 🤣 That's where all active development is
happening. (The underlying code is substantially similar although
lobstr includes bug fixes not present in pryr)

Hadley

-- 
http://hadley.nz

	[[alternative HTML version deleted]]



More information about the R-devel mailing list