Я пытаюсь найти код, который у меня есть на C++. У меня есть внутренний и внешний цикл, который я хочу разделить отдельно, но в то же время. По какой-то причине, когда я делаю это, один из экземпляров возвращает 1.84467e + 13 и всегда это точное число.Почему clock() возвращает 1.84467e + 13?
Почему это происходит?
Вот минимальный рабочий пример, который дублирует эффект на моей машине:
#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;
}
Выход не точно так же! – user1436187
Если вы хотите высокой точности, не используйте 'clock()'. [C++ кросс-платформенный таймер с высоким разрешением] (http://stackoverflow.com/q/1487695/995714), [высокоточное измерение времени C++ в Windows] (http://stackoverflow.com/q/1825720/995714) , [Таймер высокого разрешения с C++ и Linux?] (Http://stackoverflow.com/q/538609/995714) –