[Rd] making object.size() more meaningful on environments?

Hadley Wickham h.wickham at gmail.com
Wed Sep 30 00:02:46 CEST 2015


You might like to try pryr::object_size() :

``` r
library(pryr)
env1 <- new.env()
object_size(env1)
#> 328 B
env2 <- new.env(hash = TRUE, size = 75000000L)
object_size(env2)
#> 600 MB
env3 <- list2env(list(a = runif(2.5e+07), L = LETTERS))
object_size(env3)
#> 200 MB
```

It handles the issue that Gabe mentions:

``` r
a <- list2env(list(a = runif(1e+06)))
object_size(a)
#> 8 MB
b <- new.env()
b$a <- a
b$b <- runif(1e+06)
object_size(b)
#> 16 MB
object_size(a, b)
#> 16 MB
```

You just have to remember that object_size(a) + object_size(b) <=
object_size(a, b).

Hadley

On Tue, Sep 29, 2015 at 4:42 PM, Hervé Pagès <hpages at fredhutch.org> wrote:
> Hi,
>
> Currently object.size() is not very useful on environments as it always
> returns 56 bytes, no matter how big the environment is:
>
>   env1 <- new.env()
>   object.size(env1)  # 56 bytes
>
>   env2 <- new.env(hash=TRUE, size=75000000L)
>   object.size(env2)  # 56 bytes
>
>   env3 <- list2env(list(a=runif(25000000), L=LETTERS))
>   object.size(env3)  # 56 bytes
>
> This makes it pretty useless on reference class instances and other
> objects that use environments internally for caching or other purposes.
>
> What about changing this and make it return something more meaningful?
>
> Cheers,
> H.
>
> --
> 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
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



-- 
http://had.co.nz/



More information about the R-devel mailing list