La réponse est... ça dépend de la boucle mais il vaut mieux utiliser dec/jnz car:
- compatibilité avec les autres procs
- Intel ayant la facheuse habitude de modifier légèrement son architecture fréquemment, le problème avec dec que j'ai évoqué
est peut-être déjà corrigé sur les P4 de deuxième génération.
- LOOP ne travaille qu'avec ecx, je m'explique dans certaine boucle trés grande (car déroulée) j'utilise une variable comme compteur pour préserver un registre.
- le temps du branchement est en général négligeable par rapport au corps de la boucle. Si la boucle est trés petite, alors il vaut mieux la dérouler.
La meilleure méthode est quand même de ne pas acheter de P4 !. Le seul gain qu'il peut avoir sur un Athlon est lors de l'utilisation massive des instructions SSE/SSE2. Et encore... s'il tournait a la même fréquence, le P4 serait trés loin derrière ce qui prouve que son architecture (NetBurst) est MAUVAISE. D'ailleurs, je rappelle que les premiers P4 était plus lent que des PIII de même fréquence !
Un cache de donnée de 8ko en L1 alors que la mémoire est le goulot d'étranglement du PC (même avec des bus à XXXMHz) est une immense connerie. De même pour le cache L1 de code: 12 k-uops (donc ne pas trop dérouler les boucles) !!! Augmenter le L2 est bien gentil mais c'est plutôt le L1 qui aurait dû augmenter. C'est la première fois qu'un processeur voit le L1 diminuer !!! AMD a bien compris l'importance du L1(64ko pour les données et idem pour le code).
A+
Partager