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.
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