Rendimiento de for vs foreach en PHP

bucle for: el bucle for es un bucle iterativo que repite un cierto conjunto de código hasta que se alcanza una condición específica. Se usa sistemáticamente para ejecutar un conjunto de código por un número específico de veces, aquí el número de veces denota la variable del iterador.
 

Sintaxis:  

for( initialization; condition; increment/decrement ) {
    // Set of Code to be iterated and executed
}

Cada uno de los parámetros del bucle for tiene funcionalidades únicas que se explican a continuación para una mejor comprensión: 

  • inicialización: se utiliza para inicializar las variables del iterador y se ejecuta en un momento sin ejecutar la declaración de condición durante el inicio de la condición de bucle que es la primera ejecución del conjunto de código en el bucle.
  • condición: al comienzo de cada iteración, se ejecuta la declaración de condición y si la condición devuelve un valor verdadero, el ciclo continúa y se ejecutan las declaraciones anidadas en el conjunto de código. Si la condición se evalúa como falsa, la ejecución del ciclo se interrumpe en ese punto del código.
  • incremento: Incrementa el contador del ciclo con un nuevo valor de incremento que será evaluado para la declaración de condición. Se ejecuta obligatoriamente al final de cada iteración sin interrupción.

Ejemplo: Este ejemplo usa un ciclo for que comienza con $j = 1. El ciclo continuará hasta que $j sea menor o igual a 5. La variable $j aumentará en 1 cada vez que se ejecute el ciclo.  

php

<?php
 
// Loop starts from here
for($j = 1; $j <= 5; $j++) {
    echo $j . " GeeksforGeeks \n";
}
 
?>
Producción: 

1 GeeksforGeeks 
2 GeeksforGeeks 
3 GeeksforGeeks 
4 GeeksforGeeks 
5 GeeksforGeeks

 

bucle foreach: el propósito del bucle foreach es definir el uso y iterar específicamente sobre los elementos de la estructura de datos de la array.
Sintaxis:  

foreach( $array as $element ) {
    // PHP Code to be executed
}
foreach( $array as $key => $element) {
    // PHP Code to be executed
}

Los siguientes ejemplos ilustran el uso del bucle foreach.
 

Ejemplo 1: 

php

<?php
$students = array( "Jimmy", "Jonny", "Jacky" );
 
// Loop through students array
foreach( $students as $element ) {
    echo $element . "<br>";
}
 
?>
Producción: 

Jimmy
Jonny
Jacky

 

Ejemplo 2:  

php

<?php
$employee = array(
    "name" => "Robert",
    "email" => "robert112233@mail.com",
    "age" => 18,
    "gender" => "male"
 
);
 
// Loop through employee array
foreach($employee as $key => $element) {
    echo $key . ": " . $element . "<br>";
}
 
?>
Producción: 

name: Robert
email: robert112233@mail.com
age: 18
gender: male

 

Comparación de rendimiento en bucle for y foreach:  

  • Se considera que el bucle for ejecuta abiertamente la iteración, mientras que el bucle foreach oculta la iteración y la simplifica visiblemente.
  • Se considera que el bucle foreach tiene un rendimiento mucho mejor que el del bucle for genérico.
  • Aunque el ciclo foreach itera sobre una array de elementos, la ejecución se simplifica y finaliza el ciclo en menos tiempo comparativamente.
  • El ciclo foreach asigna memoria temporal para las iteraciones de índice, lo que hace que el rendimiento del sistema sea redundante en términos de asignación de memoria.

Ejemplo:  

php

<?php
// PHP program to compare the performance
// of for and foreach loop
 
// Declarations
$units = array();
 
// An array of 100 units with random string values
for($i = 0; $i <= 100; $i++) {
    $units[] = (string)rand(11111, 99999);
}
 
$startingTime = microtime(true);
 
// for loop performance evaluation
$size = count($units);
for($i = 0; $i < $size; $i++) { }
 
$endingTime = microtime(true);
$forlooptime = $endingTime - $startingTime;
 
$startingTime = microtime(true);
 
// foreach loop performance evaluation
foreach($units as $unit) { }
 
$endingTime = microtime(true);
$foreachlooptime = $endingTime - $startingTime;
 
echo "for loop evaluates to: "
. number_format($forlooptime * 1000, 6);
 
echo "\nforeach loop evaluates to: "
    . number_format($foreachlooptime * 1000, 6);
 
?>
Producción

for loop evaluates to: 0.002861
foreach loop evaluates to: 0.002861

Publicación traducida automáticamente

Artículo escrito por MerlynShelley 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 *