Le C++ présente l'intérêt de remplacer des heures de déboggages, ou d'écriture de test unitaires pour des babioles, par des baffes données par le compilateur. Il va râler bien avant sur nos bêtises. Et c'est justement une couche d'abstraction qui a facilement un coût nul côté assembleur.
@transgohan, tu parles de quelle vidéo?
Si c'est au sujet de celle de Bartosz Szurgot. Il faut savoir que l'implémentation des algos standard chez libstdc++ (la SL C++ de GNU) fait que std::fill_n sur des char va être en fait remplacée par __builtin_memset, et std::copy sera remplacée pas __builtin_memmove à chaque fois que possible -- i.e. sur tous les types employables en C.
Dans le cas des codes de Dan Saks, cette fois il n'en a pas donnés beaucoup, mais comme il disait : il avait fait valider ses codes C et C++ par des professionnels de l'embarqué avant de réaliser ses benchs.
Après, comme en C, il faut monter en compétence pour écrire du code optimisé. Il est normal que cela ne soit pas aussi efficace la première fois que l'on fait l'exercice tant que l'on n'a pas expérimenté les diverses nouvelles possibilités qui s'offrent à nous. Ils ont peut-être passé 5 fois plus de temps la première fois, je doute qu'il en aurait été de même les fois suivantes. Accessoirement, ils perdent des possibilités d'optimisation (cf pointeurs de fonction VS template, l'exemple typique qsort VS std::sort ; élimination sécurisée de la programmation défensive (fonctions qui testent toujours toutes leurs entrées, "parce que l'on ne sait jamais, le pointeur reçu pourrait être nul") ; ...)
Partager