Maison >développement back-end >C++ >Les performances lentes des iostreams sont-elles un problème standard C ou un problème de mise en œuvre du compilateur ?
La norme C impose-t-elle des performances lentes pour les iostreams, ou les compilateurs sont-ils à blâmer ?
Bien que la norme C définisse les exigences pour les iostreams, elle n’impose pas de mauvaises performances. Cependant, comme l'indique le problème, des inquiétudes ont été exprimées quant au fait que certaines implémentations d'iostreams dans la pratique pourraient présenter des performances sous-optimales.
Selon le rapport technique de 2006 sur les performances C, les spécifications de la norme pour les iostreams ne nécessitent pas en soi des implémentations inefficaces. . Cela suggère que le prétraitement et les techniques de liaison optimisées peuvent résoudre de nombreux problèmes de performances.
Les résultats de profilage présentés dans le problème montrent qu'une partie importante du temps est passée dans xsputn au sein de la bibliothèque std::basic_streambuf. Cette fonction gère la copie réelle des données dans le tampon de flux. Il est appelé à plusieurs reprises lors de l'écriture de petits morceaux de données, ce qui entraîne une surcharge importante.
Cependant, le problème démontre également que lorsqu'il s'agit de morceaux de données plus volumineux, la pénalité en termes de performances des iostreams est comparativement négligeable. Cela suggère que la lenteur perçue peut être amplifiée dans des scénarios impliquant de petites écritures fréquentes.
En conclusion, bien que la norme C n'exige pas de mauvaises performances pour les iostreams, certaines implémentations peuvent ne pas optimiser complètement les aspects de prétraitement et de liaison comme recommandé. dans le rapport technique. En tant que telles, les variations de performances observées entre les iostreams et les techniques de gestion manuelle des tampons peuvent dépendre du compilateur spécifique et de la nature des opérations sur les données.
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!