From haverty.peter at gene.com  Sun Jan 25 21:21:04 2015
From: haverty.peter at gene.com (Peter Haverty)
Date: Sun, 25 Jan 2015 12:21:04 -0800
Subject: [Rd] names function for environments?
Message-ID: <CAGh0NYo++Gn8dPoGXXgygoGXWpZ-XjaARW9jTHAsF4cvncB+mw@mail.gmail.com>

Hi all,

The "ls" function wears two hats. It allows users to inspect an
environment interactively and also serves deeper in code as the
accessor for an environment's names/keys. I propose that we separate
these two conflicting goals, keeping ls for interactive use and adding
names for a quick listing of the hash keys. This involves adding two
lines to do_names in attrib.c.

The 'ls' function and its 'objects' synonym appear very frequently in
performance-critical code like base/R/namespace.R and throughout the
methods package. These functions are currently among the major
contributors to execution time in package loading.

This two-line addition to attrib.c gives a significant speedup for
listing an environment's names/keys (2-60X depending on the 'sorted'
argument). It also simplifies the environment API by making it more
like the other basic types. We already have $ and [[ after all.

Rather than sprinkling sorted=FALSE throughout the methods and base
code, let's use names.

Would you be open to this change?

I have submitted a patch and some timings to the bug tracker as
https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16170

Regards,
Pete

____________________
Peter M. Haverty, Ph.D.
Genentech, Inc.
phaverty at gene.com



[Rd] names function for environments?
Peter Haverty