clock () просто возвращает 0 - PullRequest
0 голосов
/ 31 марта 2019

Функция C `clock ()` просто возвращает ноль

Функция часов () всегда возвращает 0

почему C clock () возвращает 0

Я посмотрел все эти вопросы и ответы

И я узнал, что clock () возвращает тики часов для некоторой константы, которая отличается для систем

И time () возвращает количество секунд.

Сначала я пытался измерить время выполнения моего алгоритма сортировки с помощью clock () следующим образом:

#include <iostream>
#include <ctime>

... Some other headers and codes

a = clock();
exchange_sort();
a = clock() - a;

... Rest of the code

Я пробовал много разных типов данных, таких как int, clock_t, long, float. И я отсортировал массив довольно большого размера int arr[1000] с уже увеличенным порядком. Но значение a всегда было 0, поэтому я попытался найти причину, используя gdb, и я установил точку останова на строку, где расположен алгоритм сортировки, чтобы я мог проверить значение a = clock();, и должно быть какое-то число внутри переменной, но там было только 0.

Итак, после этого я попытался проверить, была ли функция самой проблемой или что-то вроде этого:

#include <iostream>
#include <iostream>

int main()
{
    int a;
    clock_t b;
    float c;
    long d;
    a = clock();
    b = clock();
    c = clock();
    d = clock();
    return 0;
}

И я проверил значение каждой переменной через gdb, и были только цифры мусора, прежде чем я поместил возвращаемое значение clock(), но после того, как я положил, были только 0 внутри переменных. Итак, по-видимому, clock() просто возвращает 0 все время в моем заключении

Я действительно не знаю, как я могу это исправить

Моя версия g ++ - 4.4.7. Я запускал это в Linux Мой процессор x86_64-redhat-linux

1 Ответ

1 голос
/ 31 марта 2019

Функция clock() является грубым показателем используемого времени ЦП. Ваш код не использует достаточно процессорного времени для измерения с такой грубой мерой. Вы, вероятно, должны вместо этого переключиться на что-то вроде getrusage.

...