[Numpy-discussion] NumPy 1.2.0b2 released

Charles R Harris charlesr.harris at gmail.com
Fri Aug 15 13:12:45 EDT 2008


On Fri, Aug 15, 2008 at 10:41 AM, Andrew Dalke <dalke at dalkescientific.com>wrote:

> On Aug 15, 2008, at 4:38 PM, Pauli Virtanen wrote:
> > I think you can still do something evil, like this:
> >
> >       import os
> >       if os.environ.get('NUMPY_VIA_API', '0') != '0':
> >             from numpy.lib.fromnumeric import *
> >             ...
> >
> > But I'm not sure how many milliseconds must be gained to justify
> > this...
>
> I don't think it's enough.  I don't like environmental
> variable tricks like that.  My tests suggest:
>   current SVN: 0.12 seconds
>   my patch: 0.10 seconds
>   removing some top-level imports: 0.09 seconds
>   my patch and removing some
>      additional top-level imports: 0.08 seconds (this is a guess)
>
>
> First, I reverted my patch, so my import times went from
> 0.10 second to 0.12 seconds.
>
> Second, I commented out the pure module imports from numpy/__init__.py
>
>     import linalg
>     import fft
>     import random
>     import ctypeslib
>     import ma
>     import doc
>
> The import time went to 0.089.  Note that my patch also
> gets rid of "import doc" and "import ctypeslib", which
> take up a good chunk of time.  The fft, linalg, and
> random libraries take 0.002 seconds each, and ma takes 0.007.
>
>
> Not doing these imports makes code about 0.01 second
> faster than my patches, which shaved off 0.02 seconds.
> That 0.01 second comes from not importing the
> fft, linalg, and ma modules.
>
> My patch does improve things in a few other places, so
> perhaps those other places adds another 0.01 seconds
> of performance.
>
>
> Why can't things be better?  Take a look at the slowest
> imports. (Note, times are inclusive of the children)
>
> == Slowest (including children) ==
> 0.089 numpy (None)
> 0.085 add_newdocs (numpy)
> 0.079 lib (add_newdocs)
> 0.041 type_check (lib)
> 0.040 numpy.core.numeric (type_check)
> 0.015 _internal (numpy.core.numeric)
> 0.014 numpy.testing (lib)
> 0.014 re (_internal)
> 0.010 unittest (numpy.testing)
> 0.010 numeric (numpy.core.numeric)
> 0.009 io (lib)
>
> Most of the time is spent importing 'lib'.
>
> Can that be made quicker?  Not easily.  "lib" is
> first imported in "add_newdocs".  Personally, I
> want to get rid of add_newdocs and move the
> docstrings into the correct locations.
>

And those would be? I hope you aren't thinking of moving them into the C
code.

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20080815/ef9801ca/attachment.html>


More information about the NumPy-Discussion mailing list