Kevin Kofler (./1173) :
Les méthodes virtuelles ne fonctionnent pas à travers un mécanisme de typage dynamique, mais à travers un simple pointeur dans la classe de base qui pointe sur une table des fonctions virtuelles (vtable). Donc la pénalité que tu te tapes, ce sont 2 lectures de pointeurs en mémoire (le pointeur sur la vtable et l'entrée dans la vtable) par appel de fonction virtuelle, mais ça s'arrête là.
Pas tout à fait. Après il y a un appel à une procédure indirect (jsr (a0) pour les intimes du 68000).
Or cet appel casse la pipeline car le processeur n'utilise pas sa prédiction dynamique pour les appels indirects (pour diverses raisons, complexité de la prédiction essentiellement) pour alimenter la pipeline.
A noter que je crois que sur les x86 modernes (>= core 2 et >= phenom), ils ont ajouté cette prédiction des appels indirects.