• [^] # Re: Logiciels libres

    Posté par . En réponse à la dépêche Agrégation et logiciels libres. Évalué à 3.

    J'ait fait du Fortran orienté objet pendant 3 ans et sur un code de 15 000 lignes j'ai compris ma douleur avec -ipo. J'avais des classes avec des getter qu'il fallait absolument inliner pour la performance, d'où l'utilisation de -ipo. Malheureusement, avec ce code qui restait de taille raisonnable, la passe -ipo prenait parfois 20 minutes :-(. Donc, -ipo est à utiliser avec parcimonie.

    L'option d'inlining inter-procédural est à utiliser quand tu es certain que ton code est correct, et qu'il est déjà bien optimisé avec -O3. Une fois que tu as cette garantie, alors ça vaut le coup d'utiliser -ipo, car a priori tu ne l'utiliseras qu'à la toute fin, quand tu es (quasi-)certain que tu ne vas pas retoucher au code de sitôt.

    Après, tu peux toujours spécialiser le code via -pgo (profile guided optimization), qui permet de filer un jeu d'entrée représentatif pour ton programme et qui permet à icc d'optimiser les branchements en fonction de ce que tu lui donnes. Évidemment, si le jeu d'entrée varie énormément en production, cette option n'est pas très utile...