2个numpy函数中使用“ out =“或不使用(增加/更大)之间的速度差异

时间:2019-09-02 06:28:23

标签: python numpy

最近,我试图在执行numpy操作期间提高速度,并做了以下一些测试:

np.add(a,1,out=a)   # time=0.037
a=np.add(a,1)         # time=0.224
b=np.add(a,1)         # time=0.228

使用“ out =”的第一个比第二个和第三个快约5-8倍。我能理解其中的区别,因为第一个执行每个加法操作都在自己的位置,而第二个和第三个必须创建新的内存块。

然后我对另一个功能“更大”进行了测试:

np.greater(a,1,out=a)   # time=0.117
a=np.greater(a,1)         # time=0.138
b=np.greater(a,1)         # time=0.047

经过多次测试,似乎第二个花费了最多的时间,第一个花费了大约80%的时间,而第三个花费了30%-40%的时间。

我对“更大”功能及其速度测试结果不清楚。 请给一些建议,非常感谢!

import timeit

init = """
import numpy as np
a=np.arange(900000)
"""

f1="""
np.add(a,1,out=a)
"""

f2="""
a=np.add(a,1)
"""

f3="""
b=np.add(a,1)
"""

print(timeit.timeit(stmt=f1, setup=init,number=100))
print(timeit.timeit(stmt=f2, setup=init,number=100))
print(timeit.timeit(stmt=f3, setup=init,number=100))

0 个答案:

没有答案