67 votes

Comment utiliser le profil guidée des optimisations dans g++?

Aussi, quelqu'un peut-il m'indiquer un bon tutoriel sur le sujet? Je ne peux pas en trouver.

54voto

Maister Points 2903

-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.

22voto

rogerdpack Points 12806

À 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.

2voto

Zan Lynx Points 23100

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X