python 巨大的性能差异数组迭代与 "if in"
python massive performance difference array iteration vs "if in"
下面的两个代码片段都检查数组中是否存在元素,但第一种方法耗时 < 100 毫秒,而第二种方法耗时约 6 秒。
有谁知道为什么吗?
import numpy as np
import time
xs = np.random.randint(90000000, size=8000000)
start = time.monotonic()
is_present = -4 in xs
end = time.monotonic()
print( 'exec time:', round(end-start, 3) , 'sec ') // 100 milliseconds
start = time.monotonic()
for x in xs:
if (x == -4):
break
end = time.monotonic()
print( 'exec time:', round(end-start, 3) , 'sec ') // 6000 milliseconds ```
numpy 是专门为加速这种代码而构建的,它是用 c 编写的,几乎所有的 python 开销都被删除了,相比之下你的第二次尝试是纯粹的 python 所以它需要更长的时间遍历所有元素
下面的两个代码片段都检查数组中是否存在元素,但第一种方法耗时 < 100 毫秒,而第二种方法耗时约 6 秒。
有谁知道为什么吗?
import numpy as np
import time
xs = np.random.randint(90000000, size=8000000)
start = time.monotonic()
is_present = -4 in xs
end = time.monotonic()
print( 'exec time:', round(end-start, 3) , 'sec ') // 100 milliseconds
start = time.monotonic()
for x in xs:
if (x == -4):
break
end = time.monotonic()
print( 'exec time:', round(end-start, 3) , 'sec ') // 6000 milliseconds ```
numpy 是专门为加速这种代码而构建的,它是用 c 编写的,几乎所有的 python 开销都被删除了,相比之下你的第二次尝试是纯粹的 python 所以它需要更长的时间遍历所有元素