polution du cache
Sans m'y connaitre a fond dans les caches, je trouverais logique que si tu appliques un algo a N elements:
- il va y avoir une mise en cache une seule fois du bout de code (du style si c'est un sort) sur lequel on va boucler
- pour les donnees, pas de pitie. Si c'est des tableaux ok (donnees contigues en memoire). Si c'est des listes chainees tant pis. Si t'as vraiment besoin de perfs de la mort, tu peux toujours t'adapter en C++.
En C++, ta fonction elle se trouve une fois par fichier cpp et par type de données manipulées.
Deja, qu'appelles-tu une fois ? Une fois par fichier objet ? OK. Mais ca c'est seulement a la compil. Une fois passe au link, les fonctions template non inlineees (imagine que std::sort<Voiture> soit trop gros pour que le compilo puisse le faire inline) sont en un seul exemplaire dans l'exe.
la méthode C à base de pointeurs de fonction
La methode C++ te laisse le choix:
- tu veux des perfs qui tuent avec les templates qui "inline" tes algos, c'est bon
- tu veux la "flexibilite" (hum) dont tu parles avec le C ? Pas de probleme, le C++ fait ca aussi. C'est tres simple de refaire par exemple une fonction qsort a base de fonction std::sort...
[^] # Re: c++ su><or
Posté par Fabimaru (site web personnel) . En réponse à la dépêche Interview de Bjarne Stroustrup. Évalué à 10.
Sans m'y connaitre a fond dans les caches, je trouverais logique que si tu appliques un algo a N elements:
- il va y avoir une mise en cache une seule fois du bout de code (du style si c'est un sort) sur lequel on va boucler
- pour les donnees, pas de pitie. Si c'est des tableaux ok (donnees contigues en memoire). Si c'est des listes chainees tant pis. Si t'as vraiment besoin de perfs de la mort, tu peux toujours t'adapter en C++.
En C++, ta fonction elle se trouve une fois par fichier cpp et par type de données manipulées.
Deja, qu'appelles-tu une fois ? Une fois par fichier objet ? OK. Mais ca c'est seulement a la compil. Une fois passe au link, les fonctions template non inlineees (imagine que std::sort<Voiture> soit trop gros pour que le compilo puisse le faire inline) sont en un seul exemplaire dans l'exe.
la méthode C à base de pointeurs de fonction
La methode C++ te laisse le choix:
- tu veux des perfs qui tuent avec les templates qui "inline" tes algos, c'est bon
- tu veux la "flexibilite" (hum) dont tu parles avec le C ? Pas de probleme, le C++ fait ca aussi. C'est tres simple de refaire par exemple une fonction qsort a base de fonction std::sort...