Di antara fungsi waktu, time
, clock
getrusage
, clock_gettime
, gettimeofday
dan timespec_get
, saya ingin memahami dengan jelas bagaimana mereka diimplementasikan dan apa nilai-nilai mereka kembali untuk mengetahui di mana situasi saya harus menggunakannya.
Pertama, kita perlu mengklasifikasikan fungsi yang mengembalikan nilai jam dinding dibandingkan dengan fungsi yang mengembalikan nilai proses atau nilai ulir . gettimeofday
mengembalikan nilai jam dinding, clock_gettime
mengembalikan nilai jam dinding atau proses atau nilai untaian tergantung pada Clock
parameter yang diteruskan ke sana. getrusage
dan clock
mengembalikan nilai proses.
Kemudian pertanyaan kedua berkaitan dengan implementasi fungsi-fungsi ini dan sebagai konsekuensinya, keakuratannya. Mekanisme perangkat keras atau perangkat lunak mana yang digunakan fungsi-fungsi ini.
Tampaknya getrusage
hanya menggunakan centang kernel (biasanya 1 ms panjang) dan sebagai akibatnya tidak bisa lebih akurat daripada ms. Apakah tepat? Maka getimeofday
fungsi tersebut tampaknya menggunakan perangkat keras yang paling akurat yang tersedia. Akibatnya akurasinya biasanya mikrodetik (tidak bisa lebih karena API) pada perangkat keras terbaru. Bagaimana dengan clock
, halaman manual berbicara tentang "aproksimasi", apa artinya? Bagaimana dengan clock_gettime
, API dalam nanosecond, apakah ini berarti ia bisa sangat akurat jika perangkat keras yang mendasarinya memungkinkannya? Bagaimana dengan monotonitas?
Apakah ada fungsi lain?
clock_gettime
, karenanya penggunaangettimeofday()
menjadi sedikit lebih fleksibel daripadaclock_gettime()