website logo
Auteur
avatar
corto

Forum » » Création-Développement » » GCC: Pourquoi l'option -O3 est un faux ami (optimisation)


Posté : 10-04-2014 07:32 icone du post

Normalement, le compilateur sait inliner (automatiquement) quand il faut. Il faudrait voir dans votre code quel facteur fait qu'il inline à outrance. L'inline sert pour les petites fonctions (qui n'en appellent pas d'autres) dont il applique le code directement dans le code des fonctions appelantes au lieu de le laisser dans une fonction dédiée : ça évite un saut, une éventuelle pénalité de cache, la gestion des paramètres, ...

Je ne compile jamais en -O3. Pas pour cette raison liée aux inlines mais surtout parce que en -O2 ... ça me va bien (et c'est moins long à compiler). L'optimisation : 1/ c'est une fois que ça marche bien 2/ ça demande toujours à être mesuré

Pour le groupement des fonctions afin d'améliorer la cachabilité ... je ne vois pas le gain puisque où que soit le code, s'il est exécuté souvent dans un temps réduit, il restera en cache.
Grouper des fonctions ça pourrait être valable pour éviter des fautes de TLB mais là encore ... il faut qu'il y ait manifestement un problème lié à ça et il faut donc le mesurer (un jour, avec Hieronymus ...).

Pour revenir aux inlines, si vous mettez "inline" explicitement, sachez qu'il y a aussi une option de warning dans gcc pour alerter s'il n'a pas pu inliner une fonction qui aurait dû l'être.

Cet article provient de Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
https://amiga-ng.org/viewtopic.php?topic=1843&forum=14