>>>>> Gábor Csárdi <csardi.ga...@gmail.com> >>>>> on Tue, 29 Oct 2013 10:31:14 -0400 writes:
> Oh, you mean to put Matrix:: in the functions that need > Matrix, right, of course. Then yes, this could be a > solution. I have some issue with some new class > definitions, but I can probably work them out. > Gabor otherwise, please contact matrix-auth...@r-project.org (me being one of the two). To the whole issue in the 'Subject': Yes, indeed importing from Matrix i.e., loading the Matrix namespace, is slow notably compared to many other parts of R including its startup. I have not had time to investigate, but I even have a vague feeling that it got slower than it used to be a couple of R (and Matrix) versions ago. Note that your timings below are a bit biased because you use Rscript which unfortunately does not pre-[load + attach] the 'methods' package. But then your bias is only about 0.1 seconds from my measurements (the time increases from 0.35 to 0.45; not sure if this is still a good enough reason to omit 'methods' from Rscript by default). And ... yes, R is free (aka "libre") software, and proposals for changes that speedup the loadNamespace("Matrix") without having to change the R code inside Matrix much are highly appreciated. Martin Maechler, ETH Zurich > On Tue, Oct 29, 2013 at 10:25 AM, Gábor Csárdi > <csardi.ga...@gmail.com> wrote: >> Unfortunately that seems to be (almost) just as slow. >> >> ~$ time Rscript -e 'Matrix::summary; ls()' > /dev/null >> real 0m2.785s user 0m2.668s sys 0m0.112s >> >> Gabor >> >> On Tue, Oct 29, 2013 at 10:11 AM, Prof Brian Ripley >> <rip...@stats.ox.ac.uk> wrote: >>> On 29/10/2013 14:03, Gábor Csárdi wrote: >>>> >>>> Dear All, >>>> >>>> before its latest version my package had 'Imports: >>>> Matrix' in its DESCRIPTION file, but it did not import >>>> anything in NAMESPACE. Rather, some functions >>>> explicitly loaded Matrix, as they needed. The reason >>>> for this was that importing Matrix is really slow, and >>>> only very few igraph functions need it. (I guess Matrix >>>> is slow because of the many registered names, but that >>>> is another question.) >>>> >>>> # Empty session: ~$ time Rscript -e 'ls()' > /dev/null >>>> real 0m0.251s user 0m0.196s sys 0m0.049s >>>> >>>> # Without importing from Matrix: ~$ time Rscript -e >>>> 'library(igraph); ls()' > /dev/null Loading required >>>> package: methods real 0m0.419s user 0m0.363s sys >>>> 0m0.049s >>>> >>>> # Adding importFrom(Matrix, sparseMatrix) to NAMESPACE: >>>> ~$ time Rscript -e 'library(igraph); ls()' > /dev/null >>>> Loading required package: methods real 0m2.963s user >>>> 0m2.844s sys 0m0.115s >>>> >>>> This solution was fine with me, especially because >>>> other packages depending on igraph and using Matrix >>>> through igraph worked fine on the CRAN build servers, >>>> as igraph brought Matrix with it. (The build servers >>>> don't have recommended packages like Matrix available >>>> by default.) >>>> >>>> Recently, R CMD check does not allow me to list Matrix >>>> at Imports without importing something from it. This is >>>> understandable, because it is an inconsistency after >>>> all, but caused some headache for me. >>>> >>>> A 3s loading time for a package is IMHO much longer >>>> than ideal, especially that loading R itself is ten >>>> times faster. So I definitely don't want to import from >>>> Matrix right now. >>>> >>>> The solution I settled with was to include Matrix in >>>> 'Suggests', and the load it selectively, as before. Now >>>> some packages depending on igraph are failing on the >>>> CRAN build servers, which don't have Matrix installed >>>> for these packages. (Luckily they are probably not >>>> failing for users, because most users do have the >>>> recommended packages.) >>>> >>>> In summary, it would be great to speed up imports. >>>> >>>> Another solution would be some mechanism that allows me >>>> to import from a package as needed, not at the package >>>> loading time. Something like a delayed importFrom(). >>> >>> >>> That is what Matrix:: does. There is nothing like >>> enough here for us to tell why it would not suffice for >>> you. (If you want to import something occasionally and >>> then use it very many times, make a local copy.) >>> >>>> >>>> Just wanted to bring up this issue. >>>> >>>> Best, Gabor >>>> >>>> ______________________________________________ >>>> R-devel@r-project.org mailing list >>>> https://stat.ethz.ch/mailman/listinfo/r-devel >>>> >>> >>> >>> -- >>> Brian D. Ripley, rip...@stats.ox.ac.uk Professor of >>> Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ >>> University of Oxford, Tel: +44 1865 272861 (self) 1 >>> South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, >>> UK Fax: +44 1865 272595 >>> >>> ______________________________________________ >>> R-devel@r-project.org mailing list >>> https://stat.ethz.ch/mailman/listinfo/r-devel > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel