[Numpy-discussion] "import numpy" is slow

Alan McIntyre alan.mcintyre at gmail.com
Wed Jul 30 16:51:45 EDT 2008


On Wed, Jul 30, 2008 at 4:12 PM, Andrew Dalke <dalke at dalkescientific.com> wrote:
> 4)  numpy.testing takes 0.041 seconds to import.  The text I quoted
> above says that it's a numpy requirement that 'testing' always be
> imported, even though I'm hard pressed to figure out why that's
> important.

I suppose it's necessary for providing the test() and bench()
functions in subpackages, but I that isn't a good reason to impose
upon all users the time required to set up numpy.testing.

> Assuming it is important, 0.020 seconds is spent
> importing 'difflib'
>
>       difflib: 0.020 (utils)
>        heapq: 0.016 (difflib)
>         itertools: 0.003 (heapq)
>         operator: 0.003 (heapq)
>         bisect: 0.005 (heapq)
>          _bisect: 0.003 (bisect)
>         _heapq: 0.003 (heapq)
>
> which is only used in numpy.testing.utils:assert_string .  That can
> be deferred.
>
> Similarly,
>
>      numpytest: 0.012 (numpy.testing)
>       glob: 0.005 (numpytest)
>        fnmatch: 0.002 (glob)
>       shlex: 0.006 (numpytest)
>        collections: 0.003 (shlex)
>       numpy.testing.utils: 0.000 (numpytest)
>
>
> but notice that 'glob' while imported is never used in 'numpytest',
> and that 'shlex' can easily be a deferred import.  This saves (for
> the common case) 0.01 seconds.

Thanks for taking the time to find those; I just removed the unused
glob and delayed the import of shlex, difflib, and inspect in
numpy.testing.



More information about the NumPy-Discussion mailing list