📜  为什么嵌套循环比扁平循环执行得快得多?

📅  最后修改于: 2022-05-13 01:55:28.411000             🧑  作者: Mango

为什么嵌套循环比扁平循环执行得快得多?

Python提供了三种执行循环的方式。虽然所有方式都提供类似的基本功能,但它们的语法和条件检查时间不同。

在本文中,我们将了解为什么嵌套循环比扁平循环表现更好。但首先,让我们看看什么是嵌套循环,什么是扁平循环。

  • 嵌套循环是计算机编程和编码中的逻辑结构。其中一个循环语句在另一个循环语句中。

句法:

for [iter_1] in [sequence_1]:
    for [iter_2] in [sequence_2]:
          
          # statements of inner loop
          statements(iter_2)

    # statements of outer loop
    statements(iter_1)  
  • 循环能够迭代任何序列的项目,例如列表或字符串。

句法:

for [iter] in sequence:
     statements(s)

当我们运行我们的Python脚本时,我们运行的操作系统会为其分配一个进程 ID。它可以被系统调用中断,并且它的优先级可以随时间改变。但是当我们更改内存地址或值时,系统不太可能从进程中夺走资源。当我们运行 flat for 循环时,它分配的变量比嵌套循环少得多。所以我们可以说嵌套循环比平面循环更能利用资源(如果可用)。



例子:

Python3
# import module
import time
  
# flattened loop
def loop(n):
    for i in range(n**3):
        pass
  
  
# nested loop
def nested(n):
    
    for i in range(n):
        for j in range(n):
            for k in range(n):
                pass
  
for i in range(10, 100, 10):
    start = time.time()
    loop(i)
    print('For flattened loop:',time.time() - start)
      
    start = time.time()
    nested(i)
    print('For nested loop:',time.time() - start)
    print()


输出:

For flattened loop: 2.7894973754882812e-05
For nested loop: 4.9114227294921875e-05

For flattened loop: 0.0002155303955078125
For nested loop: 0.00024271011352539062

For flattened loop: 0.0007171630859375
For nested loop: 0.0007529258728027344

For flattened loop: 0.0016894340515136719
For nested loop: 0.0012614727020263672

For flattened loop: 0.0029077529907226562
For nested loop: 0.0022766590118408203

For flattened loop: 0.004510402679443359
For nested loop: 0.003597736358642578

For flattened loop: 0.007539272308349609
For nested loop: 0.0057599544525146484

For flattened loop: 0.01167440414428711
For nested loop: 0.008468151092529297

For flattened loop: 0.016645431518554688
For nested loop: 0.01381683349609375

我们可以看到嵌套循环所花费的时间随着 n 值的增加而减少。