<div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Mar 7, 2019 at 11:18 AM Sebastian Berg <<a href="mailto:sebastian@sipsolutions.net">sebastian@sipsolutions.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Things seem a bit hard to time with all the C/Python boundaries<br>
involved, but it seems to me that the actual time spend on the C-side<br>
is reasonably low. The biggest chunk is probably that we have 4<br>
function calls instead of 1:<br>
<br>
  1. Public api call<br>
  2. dispatch call (get arguments relevant for dispatching)<br>
  3. Call C-side function implementing the logic<br>
  4. Call the actual function<br>
<br>
Improving that much seems like it might get ugly pretty fast. But I am<br>
wondering if dispatching from within C for functions that are currently<br>
defined in C already may be moderately easy (and also the ones with the<br>
largest pay-off).<br></blockquote><div><br></div><div>Yes, I think this could be doable. The main savings is that we would avoid parsing Python arguments twice.</div><div><br></div><div>That said, there are lots of NumPy functions defined in Python, and few people seem to notice the performance difference, e.g., the speed difference between np.sum(x) and x.sum() is already larger than the overhead of dispatching.</div><div><br></div><div>If this really matters, then we should probably rewrite functions like np.sum() in C, too.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Best,<br>
<br>
Sebastian<br>
<br>
<br>
<br>
> <br>
> Did I miss something?<br>
> <br>
> Frédéric<br>
> <br>
> -----Original Message-----<br>
> From: NumPy-Discussion <<br>
> numpy-discussion-bounces+fbastien=<a href="mailto:nvidia.com@python.org" target="_blank">nvidia.com@python.org</a>> On Behalf Of<br>
> Stefan van der Walt<br>
> Sent: Thursday, March 7, 2019 12:15 PM<br>
> To: Discussion of Numerical Python <<a href="mailto:numpy-discussion@python.org" target="_blank">numpy-discussion@python.org</a>><br>
> Cc: Matthew Rocklin <<a href="mailto:mrocklin@gmail.com" target="_blank">mrocklin@gmail.com</a>><br>
> Subject: Re: [Numpy-discussion] NEP-18 comment<br>
> <br>
> Hi Sebastian, Frederic,<br>
> <br>
> On Thu, 07 Mar 2019 14:23:10 +0000, Frederic Bastien wrote:<br>
> > I like your idea Sebastian. This way it is enabled only when needed<br>
> > and it is invisible to the user at the same time.<br>
> > <br>
> > Stefan, does it solve well enough the potential problem you raised?<br>
> <br>
> I don't think so.  This means that NumPy suddenly behaves differently<br>
> when dask is imported, which again causes the problem mentioned<br>
> earlier:<br>
> that identical NumPy code could behave differently depending on<br>
> library versions, imports, and the environment.<br>
> <br>
> That said, I think this is a better solution than an environment<br>
> variable.<br>
> <br>
> Anyway, my opinion is just one of many: I'd like to hear what the<br>
> other developers think.<br>
> <br>
> Best regards,<br>
> Stéfan<br>
> _______________________________________________<br>
> NumPy-Discussion mailing list<br>
> <a href="mailto:NumPy-Discussion@python.org" target="_blank">NumPy-Discussion@python.org</a><br>
> <a href="https://mail.python.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/numpy-discussion</a><br>
> -------------------------------------------------------------------<br>
> ----------------<br>
> This email message is for the sole use of the intended recipient(s)<br>
> and may contain<br>
> confidential information.  Any unauthorized review, use, disclosure<br>
> or distribution<br>
> is prohibited.  If you are not the intended recipient, please contact<br>
> the sender by<br>
> reply email and destroy all copies of the original message.<br>
> -------------------------------------------------------------------<br>
> ----------------<br>
> _______________________________________________<br>
> NumPy-Discussion mailing list<br>
> <a href="mailto:NumPy-Discussion@python.org" target="_blank">NumPy-Discussion@python.org</a><br>
> <a href="https://mail.python.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/numpy-discussion</a><br>
> <br>
_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@python.org" target="_blank">NumPy-Discussion@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/numpy-discussion</a><br>
</blockquote></div></div>