¿Por qué un bucle anidado funciona mucho más rápido que uno aplanado?

Python proporciona tres formas de ejecutar los bucles. Si bien todas las formas brindan una funcionalidad básica similar, difieren en su sintaxis y tiempo de verificación de condición.  

En este artículo, veremos por qué un bucle anidado funciona mejor que uno aplanado. Pero primero, veamos qué es un bucle anidado y qué es un bucle aplanado.

  • Los bucles anidados son la estructura lógica en la programación y codificación de computadoras. En el que una declaración de bucle está dentro de otra declaración de bucle.

Sintaxis:

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)  
  • Los bucles tienen la capacidad de iterar sobre los elementos de cualquier secuencia, como una lista o una string.

Sintaxis:

for [iter] in sequence:
     statements(s)

Cuando ejecutamos nuestro script de python, el sistema operativo en el que lo estamos ejecutando le asignará una ID de proceso. Puede ser interrumpido por llamadas al sistema y su prioridad puede cambiarse con el tiempo. Pero no es probable que el sistema le quite recursos a un proceso cuando cambiamos la dirección de la memoria o los valores. Cuando ejecutamos un ciclo plano, asigna muchas menos variables que un ciclo anidado. Entonces podemos decir que un bucle anidado utiliza más recursos que un bucle plano si están disponibles. 

Ejemplo:

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()

Producción:

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

Podemos ver que el tiempo que tarda el ciclo anidado disminuye para el valor creciente de n.

Publicación traducida automáticamente

Artículo escrito por aniketpr11051998 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *