Все, что обещает стандарт C, это то, что CLOCKS_PER_SEC
является константным выражением с типом clock_t
, который должен быть арифметическим типом (может быть целым или плавающим типом).
(C99 7.23Дата и время <time.h>
)
Я думаю, что clock_t
, как правило, long
, но я бы не поспорил, что я прав.
Мой обычно верный Харбисон& Стил (3-е изд) предлагает использовать clock_t
к double
для использования в ваших программах, чтобы ваш код мог работать независимо от фактического типа clock_t
(18.1 CLOCK, CLOCK_T, CLOCKS_PER_SEC, TIMES):
Вот как можно использовать функцию clock
для измерения времени программы ANSI C:
#include <time.h>
clock_t start, finish, duration;
start = clock();
process();
finish = clock();
printf("process() took %f seconds to execute\n",
((double) (finish - start)) / CLOCKS_PER_SEC );
Обратите внимание, что приведение к типу double
позволяет clock_t
и CLOCKS_PER_SEC
быть либос плавающей точкой или целое число.
Вы можете подумать, будет ли это работать для ваших целей.