Aussi, quelqu'un peut-il m'indiquer un bon tutoriel sur le sujet? Je ne peux pas en trouver.
Réponses
Trop de publicités?-fprofile-générer sera l'instrument de l'application avec le profilage de code. L'application, en cours d'exécution, ouvrez certains événements qui pourraient améliorer les performances si cette consommation a été connu au moment de la compilation. Les Branches, la possibilité pour l'in-lining, etc, peuvent tous être connecté, mais je ne sais pas en détail comment GCC met en œuvre.
Après les sorties de programme, il va vider toutes ces données dans *.gcda fichiers, qui sont essentiellement des données de journal pour l'exécution d'un test. Après la reconstruction de l'application avec-fprofile-use, GCC va prendre l' *.gcda les données du journal en compte lors de ses optimisations, généralement en augmentant le rendement de manière significative. Bien sûr, cela dépend de nombreux facteurs.
À partir d' ici
g++ -O3 -fprofile-generate [more params here, like -march=native ...]
// run my program's benchmark, or something that stresses its most common path
g++ -O3 -fprofile-use [more params here, like -march=native...]
Essentiellement, vous devez d'abord compiler et lier avec ces drapeaux pour la compilation et la liaison: -fprofile-générer (à partir d' ici).
Lorsque vous l'exécutez, par défaut, il va créer .gcda fichiers "suivant" pour votre .o fichiers, il me semble (codé en dur le chemin complet où ils ont été construits).
Vous pouvez changer de où il crée ces fichiers avec l'-fprofile-dir=XXX paramètre.
Le problème est la configuration de la makefiles.
Vous avez certainement besoin de séparer la sortie des répertoires pour les fichiers objets. Je recommande de les nommer "profil" et "libération". Vous pourriez avoir à copier les *.gcda fichiers qui résultent du profil de fonctionner de telle sorte que GCC trouve dans la libération étape de génération.
Le résultat sera presque certainement être plus rapide. Il sera probablement plus grand que le bien. L'-fprofile-utiliser l'option permet à de nombreuses autres démarches d'optimisation qui sont par ailleurs ne activé par -O3.