Est*_*ban 0 python performance matlab logarithm
我正在尝试加速以下代码:
from math import log
from random import random
def logtest1(N):
tr=0
for i in range(1,N):
T= 40 + 10*random()
tr += -log(random())/T
Run Code Online (Sandbox Code Playgroud)
我是python的新手(来自matlab)...而这个相同的代码在python中运行速度比matlab(和Julia)慢5倍,这引起了我的注意.
我尝试使用numba和一个长尾小鹦鹉包装器,而不是python的numpy函数,但根本没有任何改进.
我很感激任何帮助.谢谢.
编辑:整个事情是蒙特卡罗模拟,所以N非常大... 10e6用于测试目的
你真的应该考虑numpy.而Scipy,当你在它的时候.Numpy是针对N维数组数字的速度优化包,而Scipy是基于numpy构建的科学计算的集合.
如果使用numpy数组编写函数,它看起来像这样:
def logtest2(N):
T = 40. + 10. * np.random.rand(N)
return np.sum(-1*np.log(np.random.rand(N)) / T)
Run Code Online (Sandbox Code Playgroud)
它也快得多.测试N = 1000000给了我一个500ms的运行时间版本和75ms的运行时间.
| 归档时间: |
|
| 查看次数: |
673 次 |
| 最近记录: |