158 votes

Qu'est-ce qui est le plus efficace ? Utiliser pow au carré ou simplement le multiplier par lui-même ?

Laquelle de ces deux méthodes est la plus efficace en C ? Et que dire de :

pow(x,3)

vs.

x*x*x // etc?

1voto

Camion Points 371

Je me suis occupé d'un problème similaire, et je suis assez perplexe quant aux résultats. Je calculais x³/² pour la gravitation newtonienne dans une situation à n corps (accélération subie par un autre corps de masse M situé à un vecteur de distance d) : a = M G d*(d²)³/² (où d² est le produit scalaire de d par lui-même), et j'ai pensé qu'il fallait calculer M*G*pow(d2, -1.5) serait plus simple que M*G/d2/sqrt(d2)

Le truc, c'est que c'est vrai pour les petits systèmes, mais au fur et à mesure que la taille des systèmes augmente, M*G/d2/sqrt(d2) devient plus efficace et je ne comprends pas pourquoi la taille du système a un impact sur ce résultat, car répéter l'opération sur des données différentes n'en a pas. C'est comme s'il y avait des optimisations possibles au fur et à mesure que le système grandit, mais qui ne sont pas possibles avec pow

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X