La STL est une spec, et différentes implémentations peuvent avoir un niveau d'optimisation différent.
Elle est optimisée dans le sens où :
- Elle n'ajoute pas de tests de validité (certaines implémentations en ajoutent, mais c'est désactivable)
- La complexité algorithmique de beaucoups d'algorithmes est spécifiée (par exemple, une classe comme vector redimentionnable écrite par un développeur pas très doué aura une complexité en O(n) pour ajouter un éléments, alors qu'un std::vector a une complexité en O(1) amorti).
- Elle de demande pas de downcast pour être utilisée (contrairement à des collections où tout dérive d'une classe de base "Object" comme on a pu en voir au début du C++)
- Elle utilise des techniques permettant un bon inlining facilement (voir par exemple st::sort qui explose généralement en bench qsort)
- Les implémentations sont écrites par des gens qui savent, qui ne sont pas mauvais, et qui on eu plein de temps pour optimiser
- Comme on passe moins de temps à faire des bugs, on gagne du temps sur la phase d'optimisation

Partager