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