"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 > \ "while (1) vs. para (;;): a otimização do compilador elimina as diferenças de desempenho? \"

\ "while (1) vs. para (;;): a otimização do compilador elimina as diferenças de desempenho? \"

Postado em 2025-04-04
Navegar:797

  \

while (1) vs. for (;;): existe uma diferença de velocidade? loops?

Resposta:

Na maioria dos compiladores modernos, não há diferença de desempenho entre (1) e para (;;). Compiladores:

perl:

ambos while (1) e para (;;) resultam nos mesmos opcodes, como demonstrado pelo perl -Mo = output: 1 Digite -> 2 2 NextState (Main 2 -e: 1) V -> 3 9 Leaveloop VK/2 -> A 3 Enterloop (próximo-> 8 last-> 9 redo-> 4) v-> 4 - Lineseq vk -> 9 4 nextState (principal 1 -e: 1) v -> 5 7 imprima vk -> 8 5 Pushmark S -> 6 6 const [PV "Foo \ n"] s -> 7 8 Destacar V -> 4 -e Syntaxe ok

gcc:

no gcc, ambos os loops compilam com o mesmo código de montagem, como mostrado abaixo:

. t_while: .L2: movl $ .lc0, �i ligue para puts jmp .l2 .GLOBL T_FOR t_for: .L5: movl $ .lc0, �i ligue para puts JMP .l5 Portanto, na maioria dos casos, não há necessidade de preferir um ao outro com base nas preocupações de desempenho. A escolha pode ser baseada na legibilidade do código ou em outros fatores.

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