la mejor manera de hacer un bucle en una matriz [cerrado]

var data = [];

for (i = 0, len = data.length; i < len; i++) {

for (i = 0, i < data.length; i++) {

What is the difference between these two way of forming an loop y which is sited as best among them.

Calling the first one is cheaper than the second one. Is it true?

preguntado el 10 de mayo de 11 a las 13:05

3 Respuestas

Sí, lo es, según:

http://blogs.oracle.com/greimer/entry/best_way_to_code_a

Nota: puede crear fácilmente una prueba si no está convencido.

contestado el 10 de mayo de 11 a las 17:05

Tenga en cuenta que esto es solo para JavaScript, en la mayoría de los otros lenguajes dudo que importe tanto. Además, este punto de referencia se realizó en 2008 con Firefox 3.0.1: los compiladores modernos tienen motores JavaScript mucho mejores y altamente optimizados. - Schnaader

Estoy de acuerdo. Además, yo mismo prefiero optimizar la legibilidad (= menos errores) que el rendimiento, a menos que haya una buena razón para las optimizaciones de rendimiento (y debería haber una diferencia insignificante en este caso). Así que, básicamente, siempre elegiría la segunda forma. - johndodo

En el primer caso, tendrá un adicional len variable la tiene data.length. Puede hacer esto si necesita el valor de data.length de nuevo dentro del bucle for (por ejemplo, si recuperarlo resulta caro).

Pero tenga en cuenta que es lo mismo que

len = data.length;
for (i = 0; i < len; i++) {

que preferiría por su legibilidad.

contestado el 10 de mayo de 11 a las 17:05

Llamar al primero es más económico que al segundo. ¿Es verdad? - John Cooper

Como dije, depende de si necesitarás data.length dentro del bucle for de nuevo. Si no, el segundo es un poco más rápido. - Schnaader

Depende en gran medida del idioma. La mayoría de los compiladores verán que la longitud es un ciclo invariante y la moverán fuera de sí misma. Este tipo de detalles son de poca importancia, lo realmente importante en el bucle es tener bucles que sean compatibles con la caché, es decir, que bajen los datos de una manera que la ubicación espacial y temporal de la caché sea máxima.

contestado el 10 de mayo de 11 a las 17:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.