Si nous voulons voir intuitivement l’impact des algorithmes naïfs et d’autres algorithmes sur la durée d’exécution du programme, nous pouvons procéder comme suit.
Méthode 1 : Implémentation basée sur le fichier d'en-tête ctime et la fonction clock()
Codage 1 :
#include<iostream>
#include<ctime>
using namespace std;
const int N = 1e6;
int main(){
clock_t start, end;
start = clock();
printf("Start: %ld\n",start);
for(int i = 0 ; i < N ; i ++){
//一个用时为0.002s的小循环
}
end = clock();
printf("End: %ld\n",end);
double elapsedTime = static_cast<double>(end-start) / CLOCKS_PER_SEC ;
//clock()以毫秒的形式展现,因此需要除以 CLOCKS_PER_SEC 来实现转换
//static_cast<double>的作用是将结果转换为double类型
printf("CPU PROCESSING TIME: %f",elapsedTime);
return 0;
}
Le résultat est le suivant :
Si nous ajoutons une boucle avec un nombre de boucles de 1 000 fois à l'intérieur de la petite boucle, le résultat devrait être 1 000 fois 0,002 s ;
Code 2 :
#include<iostream>
#include<ctime>
using namespace std;
const int N = 1e6;
int main(){
clock_t start, end;
start = clock();
printf("Start: %ld\n",start);
for(int i = 0 ; i < N ; i ++){
for(int i = 0 ; i < 1000 ; i ++){
//A loop that takes about two seconds to run
}
}
end = clock();
printf("End: %ld\n",end);
double elapsedTime = static_cast<double>(end-start) / CLOCKS_PER_SEC ;
printf("CPU PROCESSING TIME: %f",elapsedTime);
return 0;
}
Le résultat est le suivant :
La valeur de retour de la fonction clock :
Le nombre de ticks d'horloge écoulés depuis une époque liée à l'exécution d'un programme particulier.
En cas d'échec, la fonction renvoie une valeur de -1. --- https://cplusplus.com/reference/ctime/clock/