[Rd] Converting an environment to a list: mget vs. as.list
Simon Urbanek
simon.urbanek at r-project.org
Mon Apr 22 16:34:12 CEST 2013
On Apr 22, 2013, at 9:14 AM, Hadley Wickham wrote:
> Hi all,
>
> An interesting discovery: if you want to convert an environment to a
> list, and you already know the names of the objects in the
> environment, using mget is about twice as fast as using as.list on the
> environment.
>
I'd say the more interesting part is that ls() is so "slow" if you use the ambiguous "name" argument instead of the direct "envir" one:
> microbenchmark(ls(env), ls(envir=env), .Internal(ls(env, FALSE)))
Unit: nanoseconds
expr min lq median uq max neval
ls(env) 12445 13422 14450 15144 37505 100
ls(envir = env) 1741 2020 2331 2643 15574 100
.Internal(ls(env, FALSE)) 631 730 828 910 4157 100
Note that your objects are so small that you cannot distinguish constant cost (e.g. just the method dispatch on as.list) - and that is in fact what causes the difference - not the actual conversion:
> microbenchmark(as.list(env), as.list.environment(env), mget(c("x", "y"), env))
Unit: microseconds
expr min lq median uq max neval
as.list(env) 4.8 5.5 5.9 6.1 33.1 100
as.list.environment(env) 1.4 1.9 2.1 2.4 4.8 100
mget(c("x", "y"), env) 2.6 3.1 3.4 3.7 37.5 100
So be careful with general statements on very small run times. Suddenly it's no longer surprising ...
Cheers,
S
> https://gist.github.com/hadley/5434786
>
> Hadley
>
>
>
>
> --
> Chief Scientist, RStudio
> http://had.co.nz/
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>
More information about the R-devel
mailing list