Bonjour
J'ai essayé de tester le temps de calcul de deux méthodes.
Les voici:
j'ai une fonction principale ou se déroule le calcul.
J'ai une fonction intermédiaire, ou il y a rien dedans, si ce n'est l'appel de la fonction précédente:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int fonction(double a,double b,double c,double d){ ......... ....Calculs }
si je fais ca
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int fonction2(double x,double y,double z,double u){ fonction (1,2,2,3); }
alors le temps de calcul sera de, par exemple 9 secondes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void main(){ for(long i=1;i<500000;i++){ fonction (1,2,2,3); }
Si maintenant je fais ca:
où les arguments x,y,z,u ont été définis avant,( mais ca a pas d'importance.)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void main(){ for(long i=1;i<500000;i++){ fonction2(double x,double y,double z,double u) }
C'est exactement la même chose, il y a juste la fonction2 qui est appelée en plus sur la pile d'appel
Alors le temps de calcul sera par exemple de 14secondes,
Comme vous le voyez, le temps est plus long. Avec 500000 itérations, il y a une différence, alors vous imaginez si j'augmente d'un facteur 10 ou 100 voire 1000 le nb d'itération.
Comment faire pour rendre égale ou diminuer la différence entre les deux méthodes. Si la différence est inhérente à la présence de l'appel de la fonction intérmédiaire, alors je la vire.
Mais j'ai essayé par différents moyens en utilisant par exemple inline, ce qui ne change rien, pas moyen de faire diminuer le temps de calcul.
Que me conseillez vous?
Merci
Partager