К сожалению, clock () имеет разрешение в одну секунду только в Linux (хотя и возвращает время в микросекундах).
Многие люди используют gettimeofday () для бенчмаркинга, но он измеряет прошедшее время, а не время, используемое этим процессом / потоком, поэтому не является идеальным. Очевидно, что если ваша система более или менее простаивает, а ваши тесты довольно продолжительны, вы можете усреднить результаты. Обычно меньше проблем, но все же стоит знать о том, что время, возвращаемое gettimeofday (), не является монатонным - оно может немного подскочить, например, когда ваша система впервые подключается к серверу времени NTP.
Лучшее, что нужно использовать для бенчмаркинга - это clock_gettime () с тем параметром, который больше всего подходит для вашей задачи.
- CLOCK_THREAD_CPUTIME_ID - специфичные для потока часы времени процессора.
- CLOCK_PROCESS_CPUTIME_ID - Таймер высокого разрешения для каждого процесса от ЦПУ.
- CLOCK_MONOTONIC - представляет монотонное время с некоторой неопределенной начальной точки.
- CLOCK_REALTIME - общесистемные часы реального времени.
ПРИМЕЧАНИЕ , однако, что не все параметры поддерживаются на всех платформах Linux - кроме clock_gettime (CLOCK_REALTIME), который эквивалентен gettimeofday ().
Полезная ссылка: Код профилирования с использованием clock_gettime