• [^] # Re: option -Ofast

    Posté par (site web personnel) . En réponse à la dépêche La version 4.6 du compilateur GCC est disponible. Évalué à 6.

    Tu as essayé de compléter avec d'autre optimisation agressive ? -Ofast, -ftree-vectorize (inclus dans O3 à priori) -fomit-frame-pointer (pour avoir un registre de plus) -funsafe-loop-optimizations (utile, si tu n'utilises pas le mot clef restrict et que tu utilises beaucoup de pointer qui ne pointe jamais sur la même zone mémoire) -floop-strip-mine (avec --with-ppl et --with-cloog, pour utiliser l'infrastructure de réécriture de boucle) -fwhole-program (pour la compile de tous les fichiers C en même temps ou presque et faire plus d'inlining) -funsafe-math-optimizations (est encore plus vilain avec la norme IEEE 754) -fsingle-precision-constant (si tu ne rajoutes pas de petit f derrière les constante avec des calculs uniquement 32 bits flottant, ce qui produit des calculs et des conversion 64 bits) -funroll-loops (peut avoir de bon effet pour la vectorisation) et surtout -march=native pour utiliser toutes les instructions à disposition -mfpmath=see si tu travailles avec un cpu intel car la fpu x87 est plus lente que le sse.

    L'idée est de fournir un maximum d'informations sur ton code au compilateur pour qu'il puisse utiliser un maximum de propriétés pour avoir le code le plus rapide possible. L'aliasing (le fait d'avoir une possibilité d'avoir une zone mémoire pointé 2 fois) et les boucles mal faites sont des tueries de performances. Donner plus d'informations permet au compilateur de transformer ce qui pose problème.

    "La première sécurité est la liberté"