我有一个使用 numpy 和 scipy 的 python 程序。 在其中添加 cython 将是一个需要时间的过程,因为数据类型有很多变化
它的cprofile是这样的: http://imgur.com/a/Sgvof
大部分时间 (73%) 都被 <scipy.integrate_odepack.odeint>
用完了
我的问题基本上是,使用 cython 是否可以加快此功能(可能通过更快的调用)和其他功能。
在此示例中,此函数被调用了 ~10^6 次。
如果是这样,我可以期望多少速度?
如果加速至少是 4 到 5 倍,我会考虑追求这个
注意:
如果提供的信息不足,请在下方留言,我很乐意提供
谢谢
最佳答案
嗯一半的时间<scipy.integrate_odepack.odeint>
正在里面度过dx_dv
和 dx_du
这些看起来像是 python 函数。这些是您可以定位的功能,尤其是当它们很复杂时。
要记住的一件事是,如果减速只是因为 calling overhead * number of calls
那么我不希望事情有太大改善。这种开销不会消失,事实上它可能会变得更加复杂。您将执行 SciPy C -> Python -> 您的 C,而不是 SciPy C -> Python。
关于python - 是否值得用 cython 重写我的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10447746/