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étodo | Execução Tempo |
---|---|
scanf() | 6,4 segundos |
cin e cout | 24,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étodo | Execuçã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:
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