Sto provando a cronometrare un codice che ho in C++. Ho un ciclo interno e uno esterno che voglio separare a tempo, ma allo stesso tempo. Per qualche ragione quando lo faccio, una delle istanze restituisce 1.84467e + 13 e sempre questo numero esatto.Perché clock() restituisce 1.84467e + 13?
Perché sta succedendo?
Ecco un esempio minimale e funzionante, che replica l'effetto sulla mia macchina:
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
long int i, j;
clock_t start, finish, tick, tock;
double a = 0.0;
double adding_time, runtime;
start = clock();
for(i=0; i<10; i++)
{
a=0.0;
tick =clock();
for(j=0; j<10000000; j++)
{
a+=1;
}
tock= clock();
adding_time = (double)(tick - tock)/CLOCKS_PER_SEC;
cout << "Computation time:" << adding_time << endl;
}
finish = clock();
runtime = (double)(finish - start)/CLOCKS_PER_SEC;
cout << "Total computation time:" << runtime << endl;
}
L'uscita non è esattamente la stessa cosa! – user1436187
se si desidera una precisione elevata, non utilizzare 'clock()'. [Timer ad alta risoluzione multipiattaforma C++] (http://stackoverflow.com/q/1487695/995714), [C++ misurazione del tempo ad alta precisione in Windows] (http://stackoverflow.com/q/1825720/995714) , [Timer ad alta risoluzione con C++ e Linux?] (Http://stackoverflow.com/q/538609/995714) –