clock()
возвращает количество тактов, прошедших с момента запуска программы. Если вы хотите преобразовать значение, возвращаемое часами, в секунды, разделите на CLOCKS_PER_SEC
(и умножьте для обратного).
Существует только одна ловушка, начальный момент отсчета, используемый часами в качестве начала выполнения программы, может варьироваться в зависимости от платформы. Чтобы вычислить фактическое время обработки программы, значение, возвращаемое часами, должно сравниваться со значением, возвращаемым при первоначальном обращении к часам.
EDIT
Ларсман был так любезен, чтобы оставлять другие комментарии в комментариях. Я включил их сюда для дальнейшего использования.
В некоторых других реализациях значение, возвращаемое clock()
, также включает в себя время всех дочерних элементов, статус которых был получен с помощью wait(2)
(или другого вызова типа ожидания). Linux не включает время ожидания детей в значение, возвращаемое clock()
.
Обратите внимание, что время может меняться. В 32-битной системе, где CLOCKS_PER_SEC равен 1000000 [как указано в POSIX], эта функция будет возвращать одно и то же значение примерно каждые 72 минуты.
EDIT2
После недолгого времяпровождения вот мой переносимый (Linux / Windows) msleep. Однако будьте осторожны, я не имею опыта работы с C / C ++ и, скорее всего, буду содержать самую глупую ошибку за всю историю.
#ifdef _WIN32
#include <windows.h>
#define msleep(ms) Sleep((DWORD) ms)
#else
#include <unistd.h>
inline void msleep(unsigned long ms) {
while (ms--) usleep(1000);
}
#endif