我正在考虑从MATLAB切换到Python。我的MATLAB代码的核心在几千个数字的数组中反复调用erf,比如:

r=rand(1,1e5)

erf(r)

这是我在Python中的实现:
import numpy as np
import scipy.special as sps

r=np.random.rand(1e5)

sps.erf(r)

Python版本需要大约三倍的时间。如果我使用Cython来编译程序的这个核心,我会看到一个主要的加速吗?我很少有Python的经验,也没有C的经验,所以我想在找出Cython之前先看看这里。

最佳答案

我不指望赛顿能加快速度。所有耗时的工作都是在sps.erfnp.random.rand内部完成的;Python解释器只是传递数组。
用MATLAB的术语来说,当你不能完全矢量化你的计算时,Cython很可能会有帮助。
您可能需要考虑将此性能差异报告给SciPy开发人员。也许有一个bug很容易修复。

关于python - Cython会加速erf()计算吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29170588/

10-10 08:06