Maison > développement back-end > C++ > Les performances de C IOStream sont-elles réellement plus lentes que printf/scanf ?

Les performances de C IOStream sont-elles réellement plus lentes que printf/scanf ?

Barbara Streisand
Libérer: 2024-11-07 00:57:02
original
958 Les gens l'ont consulté

Is C   IOStream Performance Actually Slower Than printf/scanf?

Comment optimiser les performances d'IOStream en C

Les utilisateurs de C préfèrent souvent la famille de fonctions printf/scanf à C IOStreams, malgré l'interface de ce dernier avantages. Les problèmes de performances sont souvent cités comme la principale raison de cette préférence.

Buffering

L'agrandissement de la taille de la mémoire tampon du streambuf sous-jacent peut améliorer considérablement les performances en réduisant les accès au disque dur et au système. appels. Cela se fait avec :

char Buffer[N];
std::ifstream file("file.txt");
file.rdbuf()->pubsetbuf(Buffer, N);
Copier après la connexion

Gestion des paramètres régionaux

Les paramètres régionaux peuvent introduire une surcharge de performances en raison de la conversion de caractères, du filtrage et de la répartition dynamique. Définir les paramètres régionaux sur les paramètres régionaux C par défaut, ce qui désactive ces opérations, peut améliorer les performances :

std::locale::global(std::locale("C"));
Copier après la connexion

Synchronisation

Synchronisation avec C stdio (std::ios_base : :sync_with_stdio(false)) n'offre aucun avantage observable en termes de performances.

Mesures

L'analyse comparative utilisant différents compilateurs et plates-formes révèle des résultats variables :

  • g 3.4.2 sur SUSE 10p3 : ~20 % de ralentissement pour C
  • g 4.7.2 sur Ubuntu 11.10 : C 25 % plus rapide
  • g 4.4.5 sur Ubuntu Linux 10.10 : C 17 % plus rapide
  • g sur macOS X : C 111 % plus lent
  • clang 3.8.0 sur Kubuntu 16.04 : C 66 % plus rapide

Ces résultats indiquent que les améliorations des performances d'IOStream varient en fonction des implémentations spécifiques. Par conséquent, il n’existe pas de solution universelle pour optimiser les IOStreams sur toutes les plateformes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal