En Visual Basic 6.0
FOR | FOR EACH |
For i = 0 To 9 MsgBox vector(i) Next i | For Each vec In vector MsgBox vec Next |
En C#
FOR | FOREACH |
for (int i = 0; i < vector.Length; i++) { MessageBox.Show(vector[i].ToString()); } | foreach (int vec in vector) { MessageBox.Show(vec.ToString()); } |
En PHP
FOR | FOREACH |
for ($i = 0; i < count($vector); $i++) { echo $vector[$i]; } | foreach ($vector as $vec) { echo $vec; } |
Como podemos observar, en los 3 lenguajes que citamos, aparentemente el foreach es más cómodo a la hora de escribir. Pero que pasa con el rendimiento? es el mismo?
No, no es lo mismo internamente consume mas recursos el foreach, no es lo mismo ir incrementando un índice e ir a buscar a memoria el dato con ese índice, que traer todo el elemento entero. En nuestro caso el elemento es unicamente un entero, pero que pasa si la estructura es mas compleja? Ahí notamos la diferencia aunque esto es un decir, debido a que con la velocidad de procesamiento, sería imperceptible.
Mi Sugerencia
A mi particularmente no me agrada el tema de usar ciclos, trato de evitarlo siempre que pueda (por ejemplo utilizando Reflexión en caso de ser posible). Cuando el ciclo es realmente necesario, les voy a ser sincero me inclino más por el foreach, solo por una cuestión de comodidad, porque como mencionamos anteriormente su rendimiento es mucho peor con respecto al del for.
Mi Sugerencia
A mi particularmente no me agrada el tema de usar ciclos, trato de evitarlo siempre que pueda (por ejemplo utilizando Reflexión en caso de ser posible). Cuando el ciclo es realmente necesario, les voy a ser sincero me inclino más por el foreach, solo por una cuestión de comodidad, porque como mencionamos anteriormente su rendimiento es mucho peor con respecto al del for.