gpt4 book ai didi

python - 带有 if 语句的 while 循环比 while 循环更快

转载 作者:太空狗 更新时间:2023-10-29 22:27:15 26 4
gpt4 key购买 nike

我正在对循环中 if 语句的速度及其对速度的影响进行一些测试。我发现 if 语句始终如一地提高了性能。我的代码:

import time
t = time.time

start = t()
x = 0
while x < 10000000:
x += 1
time1 = t()
x = 0
while x < 10000000:
x += 1
if True:
pass
time2 = t()

print(start)
print(time1 - start) # Time for simple while-loop
print(time2 - time1) # Time for while+if

示例输出为:

1355517837.993
1.7850000858306885
1.7209999561309814

这完全违反直觉。 while-if 循环的运行速度比标准的 while 循环快得多。几乎每次我运行它时都会发生这种情况;也许 20 次中有 1 次需要更长的时间。有谁知道为什么吗?

最佳答案

dis 表明 if 语句 while 循环还有更多的步骤。

In [4]: dis.dis(t2)
2 0 LOAD_CONST 1 (0)
3 STORE_FAST 0 (x)

3 6 SETUP_LOOP 26 (to 35)
>> 9 LOAD_FAST 0 (x)
12 LOAD_CONST 2 (10000000)
15 COMPARE_OP 0 (<)
18 POP_JUMP_IF_FALSE 34

4 21 LOAD_FAST 0 (x)
24 LOAD_CONST 3 (1)
27 INPLACE_ADD
28 STORE_FAST 0 (x)
31 JUMP_ABSOLUTE 9
>> 34 POP_BLOCK
>> 35 LOAD_CONST 0 (None)
38 RETURN_VALUE

In [5]: dis.dis(t1)
2 0 LOAD_CONST 1 (0)
3 STORE_FAST 0 (x)

3 6 SETUP_LOOP 35 (to 44)
>> 9 LOAD_FAST 0 (x)
12 LOAD_CONST 2 (10000000)
15 COMPARE_OP 0 (<)
18 POP_JUMP_IF_FALSE 43

4 21 LOAD_FAST 0 (x)
24 LOAD_CONST 3 (1)
27 INPLACE_ADD
28 STORE_FAST 0 (x)

5 31 LOAD_GLOBAL 0 (True)
34 POP_JUMP_IF_FALSE 9

6 37 JUMP_ABSOLUTE 9
40 JUMP_ABSOLUTE 9
>> 43 POP_BLOCK
>> 44 LOAD_CONST 0 (None)
47 RETURN_VALUE

关于python - 带有 if 语句的 while 循环比 while 循环更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13886258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com