Извините, нет репутации, чтобы добавить это как комментарий. Так что это идет как дополнительный ответ.
В зависимости от того, как часто вы будете звонить clock_gettime()
, вы должны иметь в виду, что Linux предоставляет только некоторые из «часов» в VDSO (то есть не требует системного вызова со всеми дополнительными издержками, что только ухудшается, когда добавляется Linux). защита для защиты от атак, подобных призраку).
В то время clock_gettime(CLOCK_MONOTONIC,...)
, clock_gettime(CLOCK_REALTIME,...)
и gettimeofday()
всегда будет очень быстро (ускорен VDSO), это не относится к, например , CLOCK_MONOTONIC_RAW или любой из других POSIX часов.
Это может измениться в зависимости от версии ядра и архитектуры.
Хотя большинству программ не нужно обращать на это внимание, в VDSO могут наблюдаться всплески задержек в часах, ускоряемые VDSO: если вы нажмете их правильно, когда ядро обновляет область общей памяти с помощью счетчиков тактовых импульсов, оно должно ждать ядро закончить.
Вот «доказательство» (GitHub, чтобы держать ботов подальше от kernel.org):
https://github.com/torvalds/linux/commit/2aae950b21e4bc789d1fc6668faf67e8748300b7