• [^] # Re: Plutôt beauté du design

    Posté par (site web personnel) . En réponse au journal "beauté du code". Évalué à 4.

    J'ai encore l'impression de parler avec un universitaire qui fait des compilos mais qui n'a absolument aucunes idées précises de comment fonctionne un cpu, ni comment les compilo comme gcc optimisent à bas niveau.

    C'est le genre de personne qui s'étonne quand on leur dit qu'un code plus verbeux peut être bien plus rapide qu'un code plus court (moins de dépendance read after write).

    Le compilo gère évidement l'alignement qui ne sera jamais cassé. De plus, les prefetchers font en sorte qu'il n'y a jamais de ruptures sur les enchainements de lignes de cache. Ils sont très efficace concernant le code, bien plus que pour les données.

    Le point clef est l'alignement plutôt que la taille. Changer le code en déroulant change l'alignement de façon non maîtrisée, on peut donc se retrouver dans des situations où le code non déroulé est mieux aligné que le code déroulé ce qui le rend plus rapide.

    Si jamais tu tombes sur le compilo suffisamment crétin pour ne pas faire d'alignement, il faut aussi que la perte de performance d'alignement ne soit pas compensé par la réduction du nombre de teste de boucle, et par la recombinaison des instructions.

    Cela change l'alignement.

    Non. C'est géré.

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