Maaf, tidak ada reputasi untuk menambahkan ini sebagai komentar. Demikian jawabannya sebagai pelengkap.
Tergantung pada seberapa sering Anda akan menelepon clock_gettime()
, Anda harus ingat bahwa hanya beberapa "jam" yang disediakan oleh Linux di VDSO (yaitu tidak memerlukan syscall dengan semua overhead satu - yang hanya menjadi lebih buruk ketika Linux menambahkan pertahanan untuk melindungi dari serangan Spectre-like).
Sementara clock_gettime(CLOCK_MONOTONIC,...)
,, clock_gettime(CLOCK_REALTIME,...)
dan gettimeofday()
akan selalu sangat cepat (dipercepat oleh VDSO), ini bukan benar untuk, misalnya CLOCK_MONOTONIC_RAW atau salah satu jam POSIX lainnya.
Ini dapat berubah dengan versi kernel, dan arsitektur.
Meskipun sebagian besar program tidak perlu memperhatikan hal ini, mungkin ada lonjakan latensi pada jam yang dipercepat oleh VDSO: jika Anda menekannya tepat ketika kernel memperbarui area memori bersama dengan penghitung jam, ia harus menunggu untuk kernel untuk menyelesaikan.
Inilah "buktinya" (GitHub, untuk menjauhkan bot dari kernel.org):
https://github.com/torvalds/linux/commit/2aae950b21e4bc789d1fc6668faf67e8748300b7