Je suis en train d'écrire un programme de test en profondeur pour une structure de données que j'ai dû écrire pour une classe. J'essaye de chronométrer combien de temps il prend des fonctions pour les exécuter et les stocker dans un tableau pour l'impression postérieure. Pour vérifier que cela fonctionnait, j'ai décidé de l'imprimer immédiatement, et j'ai découvert que ça ne fonctionnait pas.Fonctions de synchronisation: Retour double 0 MS
Voici le code où j'obtiens les heures et les stocke dans un tableau qui est dans une structure.
void test1(ArrayLinkedBag<ItemType> &bag,TestAnalytics &analytics){
clock_t totalStart;
clock_t incrementalStart;
clock_t stop; //Both timers stop at the same time;
// Start TEST 1
totalStart = clock();
bag.debugPrint();
cout << "Bag Should Be Empty, Checking..." << endl;
incrementalStart = clock();
checkEmpty<ItemType>(bag);
stop = clock();
analytics.test1Times[0] = analytics.addTimes(incrementalStart,stop);
analytics.test1Times[1] = analytics.addTimes(totalStart,stop);
cout << analytics.test1Times[0] << setprecision(5) << "ms" << endl;
std::cout << "Time: "<< setprecision(5) << (stop - totalStart)/(double)(CLOCKS_PER_SEC/1000) << " ms" << std::endl;
cout << "===========================================" << endl; //So I can find the line easier
}
Voici le code où je fais le calcul que je mettais dans le tableau, cette fonction est situé dans une struct TestAnalytics
double addTimes(double start, double stop){
return (stop - start)/ (double)(CLOCKS_PER_SEC/1000);
}
Voici un extrait de la sortie que je reçois :
Current Head: -1
Current Size: 0
Cell: 1, Index: 0, Item: 6317568, Next Index: -2
Cell: 2, Index: 1, Item: 4098, Next Index: -2
Cell: 3, Index: 2, Item: 6317544, Next Index: -2
Cell: 4, Index: 3, Item: -683175280, Next Index: -2
Cell: 5, Index: 4, Item: 4201274, Next Index: -2
Cell: 6, Index: 5, Item: 6317536, Next Index: -2
Bag Should Be Empty, Checking...
The Bag Is Empty
0ms
Time: 0 ms
===========================================
J'essaye de calculer l'heure selon un article différent sur ce site. J'utilise le compilateur clang sur un système UNIX. Est-il possible que le nombre est encore trop petit pour montrer au-dessus de 0?
'CLOCKS_PER_SEC/1000' pourrait être une division entière; Je ne sais pas si cela est lié à votre problème –
@ M.M Je suis en train de couler cela à un double cependant. Je viens de remarquer que mon arrêt et totalStart impression à la fois 0. –
à '1000.0', il n'y a pas de point de coulée à un double après que vous avez déjà fait division entière –