• [^] # Re: Hmm :/

    Posté par . En réponse au journal Entretient du noyau Linux. Évalué à 2.

    > 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

    La prédiction dynamique est dans ce cas inutile : le programmeur sait bien mieux que n'importe qui qu'une allocation mémoire a très peu de chances d'échouer. Ceci explique la mise en forme du code ci-dessus, extrait du noyau.

    > 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 ?)

    C'est prévu : on instrumente le code, on exécute --> ceci génère un fichier de statistiques, et le compilateur sait relire ce fichier de statistiques lors d'une seconde compilation du même source.
    Un exemple d'optimisation sur lequel j'étais tombé une fois :
    http://h21007.www2.hp.com/dspp/files/unprotected/linux/Optimization(...)

    > dans la plupart des cas le programmeur met naturellement le test dans le "bon sens" (sous entend : on effectue un jmp si pas normal)

    Oui, enfin je ne sais pas si tous les cpus suppose la condition vraie avant de l'évaluer, ou s'il la suppose fausse ? Et tout dépend aussi du code généré par le compilateur : il est libre d'inverser le test s'il inverse également les clauses then et else, etc.