The slowness is due to the methods package. We're working on it.

Michael

On Wed, Dec 31, 2014 at 8:47 AM, Peng Yu <pengyu...@gmail.com> wrote:

> On Wed, Dec 31, 2014 at 9:41 AM, Martin Morgan <mtmor...@fredhutch.org>
> wrote:
> > 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://stackoverflow.com/questions/8637993/better-explanation-of-when-to-use-imports-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
> 'name
> > space'. When used,
> >
> > - Import: loads the name space from disk.
> > - Depends: loads the name space from disk, and attaches it to the
> search()
> > 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
> appropriate
> > when the package provides functionality only relevant to the package
> author.
>
> 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
> such
> > 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
> Depends:
> > 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
> addressed
> > 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.
>
>
>
> --
> Regards,
> Peng
>
> _______________________________________________
> Bioc-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/bioc-devel
>

        [[alternative HTML version deleted]]

_______________________________________________
Bioc-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/bioc-devel

Reply via email to