[Bioc-devel] [devteam-bioc] Use Imports instead of Depends in the DESCRIPTION files of bioconductor packages.
lawrence.michael at gene.com
Wed Dec 31 18:17:01 CET 2014
The slowness is due to the methods package. We're working on it.
On Wed, Dec 31, 2014 at 8:47 AM, Peng Yu <pengyu.ut at gmail.com> wrote:
> On Wed, Dec 31, 2014 at 9:41 AM, Martin Morgan <mtmorgan at fredhutch.org>
> > On 12/24/2014 07:31 PM, Maintainer wrote:
> >> Hi,
> >> Many bioconductor packages Depends on other packages but not Imports
> >> other packages. (e.g., IRanges Depends on BiocGenerics.) Imports is
> >> usually preferred to Depends.
> >> http://obeautifulcode.com/R/How-R-Searches-And-Finds-Stuff/
> >> Could the unnecessary Depends be forced to be replaced by Imports?
> >> This should improve the package load time significantly.
> > R package symbols and other objects are collated at build time into a
> > space'. When used,
> > - Import: loads the name space from disk.
> > - Depends: loads the name space from disk, and attaches it to the
> > path.
> > Attaching is very inexpensive compared to loading, so there is no speed
> > improvement gained by Import'ing instead of Depend'ing.
> Yes. For example, changing Depends to Imports does not improve the
> package load time much.
> But loading a package in 4 sec seems to be too long.
> > system.time(suppressPackageStartupMessages(library(MBASED)))
> user system elapsed
> 4.404 0.100 4.553
> For example, it only takes 10% of the time to load ggplot2. It seems
> that many bioconductor packages have similar problems.
> > system.time(suppressPackageStartupMessages(library(ggplot2)))
> user system elapsed
> 0.394 0.036 0.460
> > The main reason to Depend: on a package is because the symbols defined by
> > the package are needed by the end-user. Import'ing a package is
> > when the package provides functionality only relevant to the package
> What causes the load time to be too long? Is it because exporting too
> many functions from all dependent packages to the global namespace?
> > There are likely to be specific packages that mis-use Depends; packages
> > as IRanges, GenomicRanges, etc use Depends: as intended, to provide
> > functions that are useful to the end user.
> > Maintainers are certainly encouraged to think carefully about adding
> > packages providing functionality irrelevant to the end-user to the
> > field. The codetoolsBioC package (available from svn, see
> > http://bioconductor.org/developers/how-to/source-control/) provides some
> > mostly reliable hints to package authors about correctly formulating a
> > NAMESPACE file to facilitate using Imports: instead of Depends:.
> > General questions about Bioconductor packages should be addressed to the
> > support forum https://support.bioconductor.org.
> > Questions about Bioconductor development (such as this) should be
> > to the bioc-devel mailing list (subscription required)
> > https://stat.ethz.ch/mailman/listinfo/bioc-devel.
> > I have cc'd the bioc-devel mailing list; I hope that is ok.
> Bioc-devel at r-project.org mailing list
[[alternative HTML version deleted]]
More information about the Bioc-devel