En outre, quelqu’un peut-il me diriger vers un bon tutoriel sur le sujet? Je n’en trouve pas.
-fprofile-generate va instrumenter l’application avec un code de profilage. En cours d’exécution, l’application enregistrera certains événements susceptibles d’améliorer les performances si ce modèle d’utilisation était connu au moment de la compilation. Les twigs, la possibilité d’inliner, etc., peuvent toutes être consignées, mais je ne suis pas certain de la manière dont GCC met cela en œuvre.
Une fois le programme terminé, toutes ces données seront transférées dans des fichiers * .gcda, qui sont essentiellement des données de journal pour un test. Après avoir reconstruit l’application avec l’option -fprofile-use, GCC prendra en compte les données du journal * .gcda lors de ses optimisations, augmentant généralement les performances de manière significative. Bien sûr, cela dépend de nombreux facteurs.
De cet exemple :
g++ -O3 -fprofile-generate [more params here, like -march=native ...] -o executable_name // run my program's benchmarks, or something to stress its most common path g++ -O3 -fprofile-use [more params here, like -march=native...] -o executable_name
Fondamentalement, vous comstackz et liez initialement cet indicateur supplémentaire à la fois pour la compilation et la liaison: -fprofile-generate
(d’ ici ).
Ensuite, quand vous le lancez, il créera par défaut des fichiers .gcda “à côté” de vos fichiers .o, semble-t-il (codé en dur selon le chemin complet où ils ont été construits).
Vous pouvez éventuellement changer où il crée ces fichiers .gcda avec le paramètre -fprofile-dir = XXX.
Ensuite, vous comstackz et reconnectez en utilisant le paramètre -fprofile-use
et il le comstack en utilisant la qualité guidée par profil.
Le truc le plus délicat est la configuration des makefiles.
Vous avez absolument besoin de répertoires de sortie distincts pour les fichiers objects. Je recommanderais de les nommer “profile” et “release”. Vous devrez peut-être copier les fichiers * .gcda résultant du profil afin que GCC les trouve dans l’étape de génération.
Le résultat sera presque certainement plus rapide. Ce sera probablement aussi plus grand. L’option -fprofile-use active de nombreuses autres étapes d’optimisation qui ne sont par ailleurs activées que par -O3.