[Rd] object.size vs lobstr::obj_size
Tomas Kalibera
tom@@@k@||ber@ @end|ng |rom gm@||@com
Fri Mar 27 17:07:47 CET 2020
On 3/27/20 4:39 PM, Hervé Pagès 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?
Yes, the treatment of environments is not "over-approximative". It has
to be bounded somewhere, you can't traverse all captured environments,
getting to say package namespaces, global environment, code of all
functions, that would be too over-approximating. For environments used
as hash maps that contain data, such as in reference classes, it would
of course be much better to include them, but you can't differentiate
programmatically. In principle the same environment can be used for both
things, say a namespace environment can contain data (not clearly
related to any user-level R object) as well as code. Not mentioning
things like source references and parse data.
Tomas
>
> Thanks,
> H.
>
More information about the R-devel
mailing list