clock_gettime – определение текущего времени с высокой точностью.
Синтаксис:
#include < time.h >
int clock_gettime(clockid_t clock_id, struct timespec *t_time);
Аргументы:
clock_id – идентификатор часов.
t_time – структура, в которую будет записано определенное время.
Возвращаемое значение:
0 - при успешном завершении функции.
-1 - если обнаружена ошибка, при этом переменной errno присваивается код ошибки [EINVAL] - аргумент clock_id не является идентификатором часов.
Описание:
Функция clock_gettime() записывает текущие показания часов, определенных идентификатором clock_id в структуру, на которую указывает t_time.
Система всегда содержит часы с идентификатором CLOCK_REALTIME (системные часы). Значение этих часов содержит время в секундах и наносекундах, истекшее с 0 часов 1 января 1970 года.
При наличии соответствующего оборудования при конфигурации системы могут быть созданы дополнительные часы.
Структура timespec t_time содержит два элемента: time_t tv_sec – секунды, long tv_nsec – наносекунды (время истекшее с последней полной секунды).
Точность времени, записанного в переменную tv_nsec, определяется разрешающей способностью часов, и может отличаться от наносекунд. Узнать разрешающую способность часов можно с помощью функции clock_getres.
Для компиляции программы использующей данную функцию под ОС типа linux, требуется ключ – lrt. Например, для компиляции файла test.c c созданием объектного файла ts.o необходимо в консоле перейти в папку с файлом test.c и набрать команду: gcc test.c -o ts - lrt
Пример:
В примере определяется текущее время, затем значение секунд и наносекунд выводится в консоль. После вывода снова определяется время и рассчитывается разница между двумя засечками времени в наносекундах (время, затраченное на вывод в консоль) и результат выводится на консоль.
#include < stdio.h > //Для printf
#include < time.h > //Для clock_gettime
int main (void)
{
//Структуры для сохранения определенного времени
struct timespec mt1, mt2;
//Переменная для расчета дельты времени
long int tt;
//Определяем текущее время
clock_gettime (CLOCK_REALTIME, &mt1);
//Выводим определенное время на экран консоли
printf (“Секунды: %ld\n”,mt1.tv_sec);
printf (“Наносекунды: %ld\n”,mt1.tv_nsec);
//Определяем текущее время
clock_gettime (CLOCK_REALTIME, &mt2);
//Рассчитываем разницу времени между двумя измерениями
tt=1000000000*(mt2.tv_sec - mt1.tv_sec)+(mt2.tv_nsec - mt1.tv_nsec);
//Выводим результат расчета на экран
printf (“Затрачено время: %ld нс\n”,tt);
return 0;
}
| |
Результат:
Секунды: 1400251717
Наносекунды: 83548887
Затрачено время: 83082 нс
|
Смотри так же:
asctime,
asctime_r,
clock_getres,
clock_gettime,
clock_gettime,
ctime,
ctime_r,
difftime,
gmtime,
gmtime_r,
localtime,
localtime_r,
mktime,
strftime,
time
|