LINUX.ORG.RU

[C/C++] Чем лучше измерять время с высокой точностью?


0

0

Нужно замерить скорость выполнения функции, если быть точнее - понять какая её часть сколько выполняется относительно других.

Грубо говоря, нужен аналог time(), но с точностью до микросекунд (точнее в общем-то не нужно). Я что-то туплю и не могу вспомнить...

clock_gettime

anonymous
()

clock_gettime(CLOCK_MONOTONIC, &ts) gettimeofday использовать не стоит, т.к. подвержен изменениям от юзера или со стороны NTP

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

Вообще-то у процов частота меняется в зависимости от загрузки. И следовательно менятеся количество тактов за единицу времени. Так что про какую точность можно говорить.

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

Сама по себе меняется или процесс этот управляемый, если сама по себе то о каком программировании можно тут говорить. Чувствуется след лиспера гумманитария.

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

Управляет-то частотой процессора не программа пользователя. И у программы пользователя одно и то же количество тактов будет занимать разные промежутки времени.

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

Смотря какой пользователь. У меня если нужно они будут занимать абсолютно равные промежутки.

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

> Вообще-то у процов частота меняется в зависимости от загрузки.

Это можно пережить: отключить cpufreq и не будет меняться. Но кроме этого, при переключении задач и миграции между ядрами счётчик прыгает чёрт знает как.

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

>при переключении задач и миграции между ядрами счётчик прыгает чёрт знает как.

Тут нужно сразу определиться - измерять время с высокой точностью или прикинуть сколько примерно прошло. Ясно если ф-ция выполняется больше системного кванта времени то этот метод не подойдет, но тогда нужно забыть о точном измерении вообще. Ни одна системная ф-ция даже в лучшем случае не даст точность лучше одной сотой. И потом нужно учитывать что это время будет всегда больше реального потому что за измеряемый промежуток могут срабатывать прерывания.

anonymous
()

На SMP+многозадачность я не знаю что вы собрались мерять, а главное зачем. Возьмите профайлер, скорее вам нужен он

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