Beaucoup de profilage montre que les flux C++ ne sont pas la meilleure façon d'effectuer une manipulation de chaîne de fichier ou de texte lorsque la performance (vitesse) est requise. Pourtant, les flux standards sont un bon moyen de garder les choses sûres. D'après ce que j'ai lu, la plupart du problème est dû au fait que les implémentations de flux doivent 1) créer/copier beaucoup de petits objets 2) arnt entièrement génériques (ne pas gérer char et wchar de la même façon?) Etc Quoi qu'il en soit, je pensais que peut-être que C++ 0x permettrait aux développeurs de limiter au moins la création/copie d'objets et peut-être que d'autres fonctionnalités permettraient d'améliorer les performances, permettant d'atteindre les performances printf() ?Est-ce que les références C++ 0x RValue ou d'autres fonctionnalités auront un impact sur les performances des flux?
Y a-t-il un impact immédiat? Ou faudra-t-il attendre de nouvelles implémentations? Ou avons-nous encore besoin d'une nouvelle bibliothèque de flux (similaire à STL)?
Juste une note de côté sur le sujet. Je suis d'avis que les bibliothèques IO sont super difficiles à concevoir. Je voudrais que quelqu'un pointe une bibliothèque IO dans n'importe quelle langue qui soit 1) sûre, 2) efficace, 3) portable et 4) utilisable par un programmeur moyen (comme moi par exemple!). Je ne dis pas que concevoir un avec les conditions ci-dessus est impossible, je dis juste qu'il est plus dur que ce que la plupart des programmeurs pensent. Btw, +1 pour la question. – AraK
Je suis d'accord. Je suppose que c'est la principale raison pour laquelle il existe Boost.IOStream existant pour aider à la mise en œuvre des flux. J'ai entendu des gens dire que les principaux problèmes avec le flux standard sont qu'ils n'étaient pas pensés avec le template/genericity car il n'y avait pas de fonctionnalité de template au moment où il a été implémenté. Ils suggèrent souvent que la conception d'une nouvelle bibliothèque de flux basée sur la générosité comme STL résoudrait beaucoup de problèmes de performance. – Klaim
Les flux IO ont été réimplémentés pour la norme. L'un des problèmes que j'avais en 2002 en convertissant un système C++ pré-Standard en un système conforme aux normes était le changement de ce que certains d'entre eux étaient, lorsqu'ils sont devenus des classes et des fonctions modélisées. –