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 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