我正在考虑从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.erf
和np.random.rand
内部完成的;Python解释器只是传递数组。
用MATLAB的术语来说,当你不能完全矢量化你的计算时,Cython很可能会有帮助。
您可能需要考虑将此性能差异报告给SciPy开发人员。也许有一个bug很容易修复。
关于python - Cython会加速erf()计算吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29170588/