La norme C impose-t-elle de mauvaises performances pour IOStreams ?
Bien que la question suscite des inquiétudes quant aux performances de la bibliothèque standard C IOStreams, la réponse met en évidence les enseignements du rapport technique de 2006 sur les performances C.
Le rapport suggère que la norme n'impose pas inefficacités dans les implémentations d’IOStreams. Il décrit le potentiel d’amélioration de l’efficacité grâce au prétraitement et à des éditeurs de liens plus intelligents. Cependant, il reconnaît également que de telles optimisations n'ont peut-être pas été largement mises en œuvre.
Analyse de référence
La question comprend des références comparant les performances d'IOStreams à la gestion des tampons personnalisés. La réponse se concentre sur le profilage des résultats de l’exécution du test ostringstream. Il identifie le principal goulot d'étranglement comme étant std::basic_streambuf::xsputn, qui appelle std::copy après une vérification approfondie et des mises à jour du tampon.
Analyse et conclusion
La réponse fait valoir que la lenteur des performances observée dans l’indice de référence est probablement due à l’utilisation du pire des cas. Les petits blocs de données utilisés dans le test entraînent une surcharge disproportionnée pour la vérification et la mise à jour. Dans un scénario réel avec des blocs de données plus importants, ces coûts seraient moins importants.
La réponse souligne l'importance de prendre en compte les avantages des IOStreams, tels que la sécurité de la mémoire et la sécurité des types, qui surviennent en même temps. au détriment de certaines performances. Cela suggère que les problèmes de performances perçus peuvent être atténués en optimisant des blocs de données plus volumineux et en appréciant la valeur des fonctionnalités supplémentaires fournies par IOStreams.
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!