81Fermer83
PolluxLe 27/10/2007 à 20:12
Thibaut (./79) :
Intéressant et bien vu smile

Mais bon, on gagne quoi ? 4 cycles ? C'est négligeable devant le nombre de cycles que prend une fonction (disons 80 cycles minimum : appel, retour, sauvegarde et restauration des registres, création du frame, et code de la fonction lui-même). On gagne moins de 5% de temps d'exécution (et beaucoup moins pour les fonctions de taille un peu plus classique, du genre 5-10 lignes de C).

Si t'as une fonction qui fait moins de 80 cycles c'est autant faire une macro je trouve smile

On gagne 8 cycles, c'est pas beaucoup mais c'est mieux que rien : dans les cas où la fonction est rapide à exécuter mais prend quand même trop de place pour pouvoir en faire une macro, ça peut servir smile

(plus précisément, si la fonction prend plus de 18 octets alors l'appel via lea+jmp n'est pas dans l'enveloppe convexe de l'appel via jsr et de l'appel inliné, donc ça peut réellement être une optimisation utile même si elle ne va pas faire gagner 80% en vitesse ^^)

((bon mais là je me fais un peu l'avocat du diable, c'est très très anecdotique et on s'en passe très bien [mieux vaut commencer par appliquer les optimisations qui peuvent faire gagner 80% en vitesse tongue], je dis juste que c'est possible happy))