"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > ## Chamar `array.length` em um loop for é um gargalo de desempenho?

## Chamar `array.length` em um loop for é um gargalo de desempenho?

Publicado em 2024-11-07
Navegar:991

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

O custo de chamar array.length

Ao substituir loops for por loops for-each, os desenvolvedores geralmente encontram o seguinte padrão:

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

Em vez do mais simples:

for (int i = 0; i 

Isso levanta a questão: a atribuição extra n = a.length é um impacto no desempenho dos arrays?

A resposta

Não, uma chamada para array.length é uma operação O(1) ou de tempo constante.

A propriedade .length de um array é um membro final público e o acesso a ele não é mais lento do que uma variável local. Isso é diferente de chamadas de método como size(), que normalmente envolvem mais sobrecarga.

Os compiladores JIT modernos também podem otimizar a chamada para .length para eliminá-la completamente. Para verificar isso, pode-se inspecionar o código-fonte do compilador JIT ou examinar o código nativo despejado.

No entanto, o compilador JIT pode nem sempre ser capaz de realizar essa otimização, como quando a depuração está habilitada ou quando o corpo do loop contém variáveis ​​locais excessivas.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3