[Tutor] improving speed using and recalling C functions
Danny Yoo
dyoo at hashcollision.org
Fri Apr 11 23:00:23 CEST 2014
On Fri, Apr 11, 2014 at 1:01 PM, Gabriele Brambilla
<gb.gabrielebrambilla at gmail.com> wrote:
> Yes,
> but I want to make a C extension to run faster a function from
> scipy.interpolate (interp1d)
Just to emphasis: I believe your goal should be: "I want to make my
program fast."
Your goal should probably not be: "I want to write a C extension".
I'm not saying that writing a C extension is necessarily wrong, and it
may be that writing a C extension will make your program fast. But
this approach may not be the easiest or most maintainable approach to
improving your program's performance.
Using C is not without its costs and risks. As soon as you are in C
territory, the seat belts are off. Just recall the craziness that
happened this week with regards to programs written in low-level
languages like C. Explicitly: http://heartbleed.com. If you are
writing with C, you have to be very, very delicate with your code.
Experts get it wrong, with severe consequences.
This is why the focus on C extensions to get speed disturbs me so
much: it assumes that C is a safe language to use. It's not,
especially for beginners. We should strongly discourage low-level
languages unless there is some overriding concern. For scientific
calculations like the ones you are doing, you should place a premium
on getting a right answer, and not just a fast answer.
More information about the Tutor
mailing list