Cython 会加速 erf() 计算吗?
Will Cython speed up erf() calculations?
我正在考虑从 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 之前先在这里查看一下。
我不希望 Cython 能够加快速度。所有耗时的工作都在 sps.erf
和 np.random.rand
内完成; Python 解释器只是传递数组。
在 MATLAB 术语中,当您无法完全向量化计算时,Cython 最有可能提供帮助。
您可能需要考虑向 SciPy 开发人员报告此性能差异。也许有一个很容易修复的错误。
我正在考虑从 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 之前先在这里查看一下。
我不希望 Cython 能够加快速度。所有耗时的工作都在 sps.erf
和 np.random.rand
内完成; Python 解释器只是传递数组。
在 MATLAB 术语中,当您无法完全向量化计算时,Cython 最有可能提供帮助。
您可能需要考虑向 SciPy 开发人员报告此性能差异。也许有一个很容易修复的错误。