• [^] # Re: Hmm :/

    Posté par (site web personnel) . En réponse au journal Entretient du noyau Linux. Évalué à 2.

    Merci pour cette piqûre de rappel :)

    En tout cas on est bien d'accord que dans ce contexte la prédiction de branchement ne permettra pas d'optimiser le fork(), celui-ci n'apparaîssant pas assez souvent (c'est ce que je voulais dire même si je me suis un peu enmêler les pinceaux ^^)

    Après je n'avais pas pensé qu'effectivement le fait de mettre le test dans un sens ou dans l'autre changeait le chemin "par défaut", et dans ce cas effectivement le compilo fournit là une information importante suivant le code généré.

    Mais comment le dire au compilo ? Même après instrumentation ? Le compilo ne pouvant pas le deviner lui-même (c'est une info dynamique), il faut faire l'optimisation à la main ? (en gros changer nous même la condition ?)

    Effectivement dans ces conditions il peut aller tout droit, à vrai dire j'avais mal compris ta phrase je pensais que tu voulais carrement sauter les conditions (mais bon j'aurai dû réfléchir un peu plus)

    Après au niveau des perfs tu veux comparer avec quoi ? Un programme qui fait en sorte que le proc se trompe systématiquement de branchement ? Effectivement là le proc risque de devoir systématiquement vider son pipeline, ça va pas être terrible :)

    Enfin de toute façon pour en revenir au problème de départ, celà ne change strictement rien, que ce soit if+goto ou if+fonction, les problèmes de prédictions sont les mêmes. Et heuresement on n'a généralement pas besoin d'effectuer l'optimisation que tu suggères, puisque dans la plupart des cas le programme met naturellement le test dans le "bon sens" (sous entend : on effectue un jmp si pas normal), mais il est vrai qu'il faut mieux en être conscient :)