我有一个由基本数学函数(abs、cosh、sinh、exp...)组合定义的函数。
我想知道使用它是否会产生影响(速度),例如,numpy.abs()
代替abs()
?
以下是计时结果:
lebigot@weinberg ~ % python -m timeit 'abs(3.15)'
10000000 loops, best of 3: 0.146 usec per loop
lebigot@weinberg ~ % python -m timeit -s 'from numpy import abs as nabs' 'nabs(3.15)'
100000 loops, best of 3: 3.92 usec per loop
numpy.abs()
慢于abs()
因为它还处理 Numpy 数组:它包含提供这种灵活性的附加代码。
然而,Numpyis在数组上快速:
lebigot@weinberg ~ % python -m timeit -s 'a = [3.15]*1000' '[abs(x) for x in a]'
10000 loops, best of 3: 186 usec per loop
lebigot@weinberg ~ % python -m timeit -s 'import numpy; a = numpy.empty(1000); a.fill(3.15)' 'numpy.abs(a)'
100000 loops, best of 3: 6.47 usec per loop
(PS: '[abs(x) for x in a]'
Python 2.7 中比更好的慢map(abs, a)
,快了大约 30%,但仍然比 NumPy 慢得多。)
Thus, numpy.abs()
1000 个元素并不比 1 个浮点数花费更多时间!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)