La question des performances nécessite de définir avant tout ce que l'on entend par programme performant en informatique. En effet, la seule rapidité du code compilé résultant n'est plus un critère absolu pour évaluer un programme. Il est nécessaire de prendre également en compte la qualité du code C++, c'est-à-dire sa facilité de compréhension, de maintenance et de réutilisation, ainsi que la compatibilité du code avec les différents compilateurs disponibles.
Le principal apport de la STL, c'est un code C++ normalisé pour certains objets classiques, garantissant ainsi un code source lisible, facilement réutilisable.
Les algorithmes présentés par les STL ne spécifient pas explicitement un ordre d'exécution. La tentation est donc grande de les exécuter de façon parallèle. Par exemple, la norme, à propos de std::for_each
, ne précise pas si les éléments doivent être traités en ordre séquentiel. Un autre cas évident est le tri (std::sort
) à la complexité de O(n.log(n)), donc très consommateur de temps CPU.
Bien que le problème soit complexe comme tout ce qui touche au parallélisme, il y a actuellement plusieurs approches distinctes:
concurrent_queue
), dans une certaine mesure compatible avec la STL.Le problème devenant plus sensible compte tenu de l'apparition de microprocesseur multi cœur, et de la stagnation de leur fréquence d'horloge (« The free lunch is over », interview de Herb Sutter), ces solutions sont en évolution constante. On remarquera dans les évolutions possible du standard de C++ : A Proposal to Add Parallel Iteration to the Standard Library
La bibliothèque STL utilise massivement l'ensemble des possibilités du langage C++, en particulier les modèles de classes (template). Dans les années 1990, lors des premières diffusions de la STL, la prise en charge par les compilateurs souffrait de problèmes de compatibilités diverses et il n'était pas rare que la compilation d'un code valide échoue. Cependant, dix ans plus tard, on peut considérer que les diverses implémentations de la STL sont d'excellente qualité, entièrement compatibles avec les compilateurs existants.
L'utilisation des templates entraîne cependant des temps de compilation importants. Bien qu'en constante amélioration, cette limitation est l'une des seules réserves actuellement formulée contre la STL.