[Numpy-discussion] in place random generation
Charles R Harris
charlesr.harris@gmail....
Wed Mar 14 22:24:07 CDT 2007
On 3/14/07, Daniel Mahler <dmahler@gmail.com> wrote:
>
> On 3/12/07, Travis Oliphant <oliphant@ee.byu.edu> wrote:
>
> > I'm not convinced that the broadcasting is causing the slow-downs.
> > Currently, the code has two path-ways. One gets called when the inputs
> > are scalars which is equivalent to the old code and the second gets
> > called when broadcasting is desired. Their should be only a very small
> > speed hit because of the check. So, it should be possible to do both
> > without great differences in speed.
> >
> > Perhaps the speed hit is due to something else (like creating 0-d arrays
> > from scalars, or something similar). So, in other words, I think the
> > problem is fixable, but we need someone who can track down where the
> > slowness is coming from.
> >
> > -Travis
>
> The problem is very easy to reproduce.
> What would it take to do the tracking?
> I'd like to see this fixed.
> Presumably the python profiler is no use since the problem is inside C
> code,
> which is not my expertise.
Well, it is not creation of scalars per se that is slow.
In [6]: def normal1() :
...: a = normal(0,1,1000)
...: for i in xrange(1000) :
...: b = a[i]
In [7]: def normal2() :
...: for i in xrange(1000) :
...: b = normal(0,1)
In [18]: t1=Timer("normal1()","from __main__ import normal1")
In [19]: t2=Timer("normal2()","from __main__ import normal2")
In [22]: t1.timeit(100)
Out[22]: 0.086430072784423828
In [23]: t2.timeit(100)
Out[23]: 4.276231050491333
Looks to me like the call overhead is dominate and that the fast path is not
nearly as fast as it could be. Either it takes a long time to decide which
path to take or something is getting reinitialized that needn't. Could be
that normals should be special cased but I can't tell till I look at the
code.
Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://projects.scipy.org/pipermail/numpy-discussion/attachments/20070314/a3905b99/attachment.html
More information about the Numpy-discussion
mailing list