Quelles informations l’optimisation guidée par le profil GCC (PGO) recueille-t-elle et quelles optimisations l’utilisent?

Quelles informations GCC collecte-t-il lorsque -fprofile-generate et quelle optimisation utilise en fait les informations collectées (lors de la définition de l’ -fprofile-use )?

J’ai besoin de citations ici. J’ai cherché pendant un moment mais je n’ai rien trouvé documenté.

Les informations concernant l’optimisation du temps de liaison (LTO) seraient un plus! = D

-fprofile-generate active -fprofile-arcs , -fprofile-values et -fvpt .

-fprofile-use active les -fbranch-probabilities -fvpt , -funroll-loops , -funroll-loops , -fpeel-loops et -ftracer

Source: http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Optimize-Options.html#Optimize-Options

PS Informations sur LTO également sur cette page.

“Ce que chaque programmeur devrait savoir sur la mémoire” par Ulrich Drepper https://people.freebsd.org/~lstewart/articles/cpumemory.pdf http://www.akkadia.org/drepper/cpumemory.pdf

Dans la section 7.4

  • La compilation avec –profile-generate génère un fichier .gcno pour chaque fichier object. (le même fichier que celui utilisé pour les rapports de couverture gcov)
  • alors vous devez exécuter quelques tests, pendant l’exécution, il enregistre les données de couverture dans des fichiers .gcda
  • recomstackr avec –profile-use: il collectera les données de couverture et en déduira si une twig est probable (__builtin_expect (.., 1) ou improbable (__builtin_expect (.., 0)

Le résultat devrait être plus rapide, car il serait préférable de pré-charger le code dans le cache d’instructions du processeur.