On 3/27/20 12:00, Hadley Wickham wrote:> > > On Fri, Mar 27, 2020 at 10:39 AM Herv? Pag?s <hpages at fredhutch.org > <mailto:hpages at 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 BNice. 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 ;-) Thanks, H.> > Hadley > -- > http://hadley.nz > <https://urldefense.proofpoint.com/v2/url?u=http-3A__hadley.nz&d=DwMFaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=MX7Olw-dGRDfJNWEqIDTTTkaagVswOEqcRnxuRBAdjw&s=haVkOV6bEj7VnjT4Gn4iXzRqO7IOqDZUZuEeFPSHQuM&e=>-- Herv? Pag?s Program in Computational Biology Division of Public Health Sciences Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N, M1-B514 P.O. Box 19024 Seattle, WA 98109-1024 E-mail: hpages at fredhutch.org Phone: (206) 667-5791 Fax: (206) 667-1319
On Fri, Mar 27, 2020 at 4:01 PM Herv? Pag?s <hpages at 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 at fredhutch.org > > <mailto:hpages at 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]]
On 3/27/20 15:19, Hadley Wickham wrote:> > > On Fri, Mar 27, 2020 at 4:01 PM Herv? Pag?s <hpages at fredhutch.org > <mailto:hpages at 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 at fredhutch.org <mailto:hpages at fredhutch.org> > > <mailto:hpages at fredhutch.org <mailto:hpages at 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)Good to know, thanks! Couldn't find any mention of pryr being abandoned and superseded by lobster (which definitely sounds more yummy) in pryr's README.md or DESCRIPTION file. Would be good to put this somewhere. H.> > Hadley > -- > http://hadley.nz > <https://urldefense.proofpoint.com/v2/url?u=http-3A__hadley.nz&d=DwMFaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=YbZWqj-epVToKynrOqXF8TgrxHYKx1pF3q2GrOuJwBQ&s=qCeYCgVDbk_GzadBoAgc3cf81fQfRJXpsf0P5meMhtU&e=>-- Herv? Pag?s Program in Computational Biology Division of Public Health Sciences Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N, M1-B514 P.O. Box 19024 Seattle, WA 98109-1024 E-mail: hpages at fredhutch.org Phone: (206) 667-5791 Fax: (206) 667-1319