Je sais que la soirée a pris beaucoup de retard, mais le temps change et les réponses restent. C ++ 11 a des changements radicaux, dont beaucoup sont destinés à améliorer les performances de C ++ et de la bibliothèque standard. Il semble que ceux qui n'utilisent ni le STL ni le Boost, ont tendance à ne pas suivre les nouvelles normes non plus, laissant les solutions filées à la maison sans améliorations importantes, bien sûr, ce n'est pas toujours le cas.
J'ai utilisé STL sur tous les projets du milieu des années 90 à aujourd'hui, à l'exception d'un court laps de temps chez EA. Je pense que le parti anti-STL avait des raisons peu rationnelles de ne pas l'utiliser. Ceux-ci sont en grande partie partis. Les allocateurs personnalisés sont une solution, l’utilisation de la réserve en est une autre, et ne pas passer les choses par valeur en est une troisième, mais elles sont assez simples et tout programmeur devrait les connaître. Plus important encore est l'utilisation d'algorithmes. Les rédacteurs du compilateur savent exactement ce que fait un for_each () et peuvent optimiser le code. Cela ne peut pas se produire avec une boucle roulée à la maison. for_each () sur un objet const est encore mieux. Microsoft optimise for_each de nombreuses manières, y compris la sérialisation. Ils ont également la bibliothèque AMP qui a parallel_for_each (). Si vous en avez l'occasion, parlez-en aux ingénieurs du compilateur. Les compilateurs de la console vont optimiser ce qui est utilisé, alors C'est un problème de poule et d'oeuf. Microsoft utilise beaucoup de C ++ 11 et la prochaine XBox ne sera pas différente. Je n'ai aucune idée de la PS4, nous n'en avons pas encore.
Les allocateurs personnalisés sont un moyen de traiter le problème de mémoire, mais une autre option (souvent négligée) consiste à utiliser les classes new et delete. Des augmentations de performances énormes peuvent être obtenues de cette façon.
La notion que Boost et STL ont une vision étroite de la résolution de problèmes est de la pure folie. Je suis stupéfait de voir combien de choses dans le TSL et dans Boost peuvent être personnalisées à l'aide de traits et de règles. Recherchez un exemple de comparaison de chaîne indépendante de la casse.
En ce qui concerne les temps de liaison longs et le gonflement du code, le nouveau modèle extern devrait vous aider. En général, les longs temps de compilation sont dus à un couplage excessif et à une mauvaise utilisation de pch.
La raison la plus convaincante d’utiliser STL au-dessus de l’animal domestique est que des millions de personnes peuvent vous aider à utiliser le STL. Comme toujours, n'optimisez pas prématurément et testez, testez, testez.