Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вычисляет реальное прошедшее время для процесса.
Синтаксис
clock_t clock( void );
Возвращаемое значение
Время, прошедшее с момента инициализации CRT в начале процесса, составляющее CLOCKS_PER_SEC единиц в секунду. Если прошедшее время недоступно или превышает максимальное положительное время, которое может быть записано как тип clock_t, функция возвращает значение (clock_t)(-1).
Замечания
Функция clock сообщает реальное время, прошедшее с момента инициализации CRT при запуске процесса. Эта функция не соответствует стандарту ISO C, указывающего чистое время ЦП в качестве возвращаемого значения. Чтобы получить время ЦП, используйте функцию Win32 GetProcessTimes . Чтобы определить прошедшее время в секундах, разделите значение, возвращаемое функцией clock, на макрос CLOCKS_PER_SEC.
Если времени достаточно, значение, возвращаемое функцией clock, может превышать максимальное положительное значение clock_t. Если процесс выполняется дольше, значение, возвращаемое функций clock, всегда равно (clock_t)(-1) в соответствии со стандартами ISO C99 (7.23.2.1) и ISO C11 (7.27.2.1). Корпорация Майкрософт реализует clock_t как long, 32-разрядное целое число со знаком, а макрос CLOCKS_PER_SEC определяется как 1000. Этот макрос предоставляет максимальное clock возвращаемое значение функции 2147483,647 секунд или около 24,8 дня. Не полагаться на значение, возвращаемое clock в процессах, которые выполняются дольше, чем это время. Вы можете использовать 64-разрядную time функцию или функцию Windows QueryPerformanceCounter для записи процесса, прошедшего много лет.
Требования
| Маршрут | Обязательный заголовок |
|---|---|
clock |
<time.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
// crt_clock.c
// This sample uses clock() to 'sleep' for three
// seconds, then determines how long it takes
// to execute an empty loop 600000000 times.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// Pauses for a specified number of clock cycles.
void do_sleep( clock_t wait )
{
clock_t goal;
goal = wait + clock();
while( goal > clock() )
;
}
const long num_loops = 600000000L;
int main( void )
{
long i = num_loops;
clock_t start, finish;
double duration;
// Delay for a specified time.
printf( "Delay for three seconds\n" );
do_sleep( (clock_t)3 * CLOCKS_PER_SEC );
printf( "Done!\n" );
// Measure the duration of an event.
start = clock();
while( i-- )
;
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "Time to do %ld empty loops is ", num_loops );
printf( "%2.3f seconds\n", duration );
}
Delay for three seconds
Done!
Time to do 600000000 empty loops is 1.354 seconds
См. также
Управление временем
difftime, , _difftime32_difftime64
time, , _time32_time64