LINUX.ORG.RU

>>

Если нужно посчитать время работы какой-то готовой прогрымма - смотри утилиту time. Если это нужно сделать внутри программы - смотри функцию gettimeofday и другие из той же серии.

Deleted
()

запомнить время начала. вычесть из него время конца.

так-то!

engage
()

Если реальное время работы - уже сказали.
Если процессорное, то смотреть clock_getcpuclockid

snizovtsev ★★★★★
()
Ответ на: комментарий от Valeriy_Onuchin

>RDTSC

пойдет на древнай машине, современные процы из-за экономии погут этот регистр не инкрементить

Pi ★★★★★
()
Ответ на: комментарий от Pi

> >RDTSC

> пойдет на древнай машине, современные процы из-за экономии погут этот регистр не инкрементить

На древней машине RDTSC может не оказаться вообще. Посему нужно проверять поддержку обязательно.

Современные процы? При чем тут процессор вообще? Он такты не считает.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

RDTSC лучше не использовать, если нужно считать именно *время*, а не *такты процессора*, так как количество тактов в секунду может быть не постоянным.

В тему: нашёл ещё одну функцию - clock_gettime - позволяет замерять время с точностью до наносекунд (максимально насколько это позволяет железо).

Deleted
()
Ответ на: комментарий от gzh

>> rdtsc плохо еще и из-за того что частота может изменяться.

Опередил =).

Deleted
()
Ответ на: комментарий от gzh

> rdtsc плохо еще и из-за того что частота может изменяться.

И это не все. suspend-2-ram/disk влияет на rdtsc, с мультиядерностью не все хорошо. Но для измерения коротких интервалов вполне подходит.

Для линукса весьма неплох следующий вариант:

struct timespec now;
clock_gettime(CLOCK_REALTIME, &now);
std::printf("%d.%09li\n", now.tv_sec, now.tv_nsec);

andreyu ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.