"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ## ¿Llamar a `array.length` en un bucle for es un cuello de botella en el rendimiento?

## ¿Llamar a `array.length` en un bucle for es un cuello de botella en el rendimiento?

Publicado el 2024-11-07
Navegar:695

## Is Calling `array.length` in a for Loop a Performance Bottleneck?

El costo de llamar a array.length

Al reemplazar bucles for con bucles for-each, los desarrolladores a menudo encuentran el siguiente patrón:

for (int i = 0, n = a.length; i 

En lugar del más simple:

for (int i = 0; i 

Esto plantea la pregunta: ¿la asignación adicional de n = a.length afecta el rendimiento de los arreglos?

La respuesta

No, una llamada a array.length es una operación O(1) o de tiempo constante.

La propiedad .length de una matriz es un miembro final público y acceder a ella no es más lento que una variable local. Esto es diferente a las llamadas a métodos como size(), que normalmente implican más gastos generales.

Los compiladores JIT modernos también pueden optimizar la llamada a .length para eliminarla por completo. Para verificar esto, se puede inspeccionar el código fuente del compilador JIT o examinar el código nativo volcado.

Sin embargo, es posible que el compilador JIT no siempre pueda realizar esta optimización, como cuando la depuración está habilitada o cuando el cuerpo del bucle contiene excesivas variables locales.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3