Ainsi, le cache d'instructions cpu ne se remplit pas avec du code ~jamais exécuté : on gagne effectivement en performances.
Ca ne change strictement rien : dans mon exemple on fait l'appel à la méthode de traitement d'erreur avec autant de probabilité qu'avec un if+goto.
Ensuite ce n'est pas au compilateur de se soucier de ça : le processeur gère lui même un cache d'instruction en fonction de la fréquence d'apparition des instructions, et tu ne pourras jamais exécuter le code tout droit, il faut obligatoirement faire les tests de nullitée. Sans compter que de toute façon le processeur évaluera peut être les 2 branches s'il a rien d'autre à foutre (faut bien remplir le pipeline).
Ensuite vu que chaque proc y vas de sa méthode de cache, je vois pas trop ce que tu vas indiquer au compilo de faire...
Enfin je finirais par faire remarquer que je ne suis pas sûr que l'appel à fork soit si fréquent pour que le proc le mette dans son cache d'instruction...
Enfin tout ça pour dire qu'un if+goto ou un if+appel ne change rien au niveau des perfs si la condition n'est quasiment jamais rempli (ce qui est vrai la plupart du temps)
[^] # Re: Hmm :/
Posté par TImaniac (site web personnel) . En réponse au journal Entretient du noyau Linux. Évalué à 3.
Ca ne change strictement rien : dans mon exemple on fait l'appel à la méthode de traitement d'erreur avec autant de probabilité qu'avec un if+goto.
Ensuite ce n'est pas au compilateur de se soucier de ça : le processeur gère lui même un cache d'instruction en fonction de la fréquence d'apparition des instructions, et tu ne pourras jamais exécuter le code tout droit, il faut obligatoirement faire les tests de nullitée. Sans compter que de toute façon le processeur évaluera peut être les 2 branches s'il a rien d'autre à foutre (faut bien remplir le pipeline).
Ensuite vu que chaque proc y vas de sa méthode de cache, je vois pas trop ce que tu vas indiquer au compilo de faire...
Enfin je finirais par faire remarquer que je ne suis pas sûr que l'appel à fork soit si fréquent pour que le proc le mette dans son cache d'instruction...
Enfin tout ça pour dire qu'un if+goto ou un if+appel ne change rien au niveau des perfs si la condition n'est quasiment jamais rempli (ce qui est vrai la plupart du temps)