Implications sur les performances des fonctions virtuelles en C
Vous avez exprimé des inquiétudes concernant l'impact sur les performances des fonctions virtuelles dans la conception de votre classe. Est-ce une préoccupation valable ou peut-il être considéré comme une optimisation prématurée ?
Pour répondre à votre question, nous avons effectué des tests de performances sur un processeur PowerPC 3 GHz. Nous avons créé une classe vectorielle 4D simple avec des fonctions get/set. Nous avons effectué des tests avec les fonctions définies comme appels de fonction en ligne, virtuels et réguliers.
Voici les résultats :
Dans ce cas, avec les données placées dans le cache L1, les appels de fonction virtuelle étaient environ 20 fois plus lent que les appels en ligne. Cependant, il est crucial de considérer le contexte de cette différence de performances.
Chaque itération de la boucle de test impliquait 12 288 appels de fonction. Par conséquent, la boucle virtuelle a pris 92 ms de plus que la boucle directe, ce qui a entraîné une surcharge supplémentaire de seulement 7 nanosecondes par appel de fonction.
Sur la base de ces résultats, nous concluons que :
Dans dans la plupart des situations, à moins d'optimiser des performances extrêmes, les compromis associés à l'utilisation de fonctions virtuelles pour l'encapsulation et la flexibilité l'emportent sur tout problème de performances potentiel.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!