"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > scanf() vs cin : lequel est le plus rapide pour l'entrée C++ ?

scanf() vs cin : lequel est le plus rapide pour l'entrée C++ ?

Publié le 2024-11-23
Parcourir:757

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

Comparaison de vitesse : scanf() vs. cin

Question :

Est-ce vrai que l'utilisation de scanf() dans les programmes C est plus rapide que l'utilisation de cin ?

Réponse :

Oui, scanf() est en effet plus rapide que cin en C , comme le démontrent les résultats de l'analyse comparative.

Pour effectuer le test, un programme simple a été écrit pour lire une grande liste de nombres et calculer leur valeur XOR. Le programme a été implémenté avec scanf() de stdio et cin et cout de iostream.

Résultats :

MéthodeExécution Temps
scanf()6,4 secondes
cin et cout24,3 secondes

Cette différence de vitesse significative est principalement attribuée à la surcharge des fonctions iostream pour maintenir la synchronisation avec Fonctions stdio de C.

Optimisation des performances de cin :

Cependant, en désactivant la synchronisation avec std::ios::sync_with_stdio(false), la version iostream peut obtenir des résultats comparables performances :

MéthodeExécution Temps
cin et cout (avec sync_with_stdio(false))5,5 secondes

Avec cette optimisation, iostream surpasse scanf() et devient le plus rapide méthode.

Conclusion :

Bien que scanf() soit intrinsèquement plus rapide que cin, son utilisation dans les programmes C n'est généralement pas recommandée car :

  • Il n'est pas de type sécurisé, contrairement à cin.
  • Cela conduit à une incohérence dans le style de programmation, mélangeant le style C et le style C. code.
  • iostream fournit un moyen plus moderne et efficace pour les opérations d'entrée et de sortie, en particulier lorsqu'il est optimisé en désactivant la synchronisation.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3