• [^] # Re: Et les nouveaux langages de programmation...

    Posté par . En réponse au journal Pourquoi un PC ralentit-il ?. Évalué à 5. Dernière modification le 03 juillet 2014 à 16:05.

    Avoir un code trop gros peut être coûteux à l’exécution.
    D'une c'est très rarement le cas en optimisation (le 1er problème est toujours l'algorithme, puis la gestion du cache de données, ensuite la vectorisation et les branches, ensuite l'optimisation du code pour l'exécution et niveau cache de code).
    De deux, les template ne dupliquent pas de code puisque une instantiation avec les mêmes paramètres produit le même code. Si on instantie le template avec des paramètres différents, c'est que le programme en a besoin et qu'il devrait de toutes façons écrire deux classes s'il n'utilisait pas les template. Deux effets supplémentaires sur les template : à l'instantiation, le compilateur ne sélectionne que la sous-partie des méthodes qui sont effectivement utilisées par l'instantiation (si un T<int> n'utilise qu'une fonction foo et qu'un T<double> n'utilise qu'une fonction bar, la fonction bar n'est pas compiilée pour T<int> ni foo pour T<double>) ; en outre, le compilateur peut utiliser le même code si les effets sont identiques (cas des template instantiés avec un type pointeur par exemple).