clock () возвращает отрицательную разницу во времени на Windows машине - PullRequest
2 голосов
/ 06 августа 2020

Я написал следующую программу в C для расчета времени выполнения (на машине Windows -7) :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void) {
double time_spent = 0.0;
clock_t begin;
clock_t end;

begin = clock();
    // code to read a file 
end = clock();
time_spent += ((double)(end - begin)) / CLOCKS_PER_SEC;

printf("Time elapsed is %f seconds", time_spent);
getch();
return 0;
}

В конце выполнения значение (end-begin) отрицательно. Кроме того, значение begin было 46, а значение end было 43 после выполнения программы.

Я использую 64-битный Windows -7.

  1. Может ли кто-нибудь объяснить, почему значение end меньше begin.
  2. Как это можно исправить на windows машине .

( clock (), возвращающее отрицательное значение в C, говорит только о POSIX).

1 Ответ

1 голос
/ 07 августа 2020

В windows 7 доступен целый ряд часов и интервальных таймеров, как физических, так и через интерфейсы. Какие именно ЦП ??? Определенные функции времени / таймера БУДУТ работать в обратном направлении !!! По крайней мере, для коротких интервалов / разрешений. Это хорошо известная проблема. См. Материалы в сети Mircosoft. Возможно, вам понадобятся интервальные таймеры Win32 API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...