Количество тактов в секунду может быть найдена с помощью системного вызова sysconf,
printf ("_SC_CLK_TCK = %ld\n", sysconf (_SC_CLK_TCK));
Типичное значение тактов в секунду равно 100. То есть, в этом случае, есть часы тик каждые 10 миллисекунд или 0,01 секунды. Чтобы преобразовать значения clock_t, возвращенные временем, в секунды нужно разделить на количество тактов в секунду. Пример программы с использованием времени и вызовов sysconf системы (_SC_CLK_TCK) есть
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#include <sys/times.h>
main()
{
clock_t ct0, ct1;
struct tms tms0, tms1;
int i;
if ((ct0 = times (&tms0)) == -1)
perror ("times");
printf ("_SC_CLK_TCK = %ld\n", sysconf (_SC_CLK_TCK));
for (i = 0; i < 10000000; i++)
;
if ((ct1 = times (&tms1)) == -1)
perror ("times");
printf ("ct0 = %ld, times: %ld %ld %ld %ld\n", ct0, tms0.tms_utime,
tms0.tms_cutime, tms0.tms_stime, tms0.tms_cstime);
printf ("ct1 = %ld, times: %ld %ld %ld %ld\n", ct1, tms1.tms_utime,
tms1.tms_cutime, tms1.tms_stime, tms1.tms_cstime);
printf ("ct1 - ct0 = %ld\n", ct1 - ct0);
}
Источник
http://www.softprayog.in/tutorials/linux-process-execution-time
вы, кажется, предполагают, что это никоим образом не связано с тактовой частоты процессора? – liv2hak
@ liv2hak нет, это не связано, это количество раз, когда таймер прерывает CPU для планирования и других задач, 100 Гц является общим значением, более высокая частота равна более высокому разрешению таймера и более накладным расходам. – iabdalkader
Ну, не совсем ... Современные ядра Linux используют динамическую тактовую частоту в зависимости от текущей нагрузки (т. Е. Не более периодических тиков). – Claudio