"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 > scanf() vs. cin: Qual é mais rápido para entrada C++?

scanf() vs. cin: Qual é mais rápido para entrada C++?

Publicado em 23/11/2024
Navegar:602

scanf() vs. cin: Which is Faster for C   Input?

Comparação de velocidade: scanf() vs. cin

Pergunta:

É verdade que usar scanf() em programas C é mais rápido do que usar cin?

Resposta:

Sim, scanf() é realmente mais rápido que cin em C , conforme demonstrado pelos resultados de benchmarking.

Para conduzir o teste, um programa simples foi escrito para ler uma grande lista de números e calcular seu valor XOR. O programa foi implementado com scanf() do stdio e cin e cout do iostream.

Resultados:

MétodoExecução Tempo
scanf()6,4 segundos
cin e cout24,3 segundos

Essa diferença significativa de velocidade é atribuída principalmente à sobrecarga das funções iostream na manutenção da sincronização com funções stdio de C.

Otimizando o desempenho do cin:

No entanto, ao desabilitar a sincronização com std::ios::sync_with_stdio(false), a versão iostream pode alcançar desempenho comparável:

MétodoExecução Tempo
cin e cout (com sync_with_stdio(false))5,5 segundos

Com esta otimização, iostream supera scanf() e se torna o mais rápido método.

Conclusão:

Embora scanf() seja inerentemente mais rápido que cin, seu uso em programas C geralmente não é recomendado porque:

  • Não é seguro para o tipo, ao contrário do cin.
  • Isso leva à inconsistência no estilo de programação, misturando estilo C e estilo C código.
  • iostream fornece uma maneira mais moderna e eficiente para operações de entrada e saída, especialmente quando otimizado desativando a sincronização.
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