Di antara fungsi waktu, time, clock getrusage, clock_gettime, gettimeofdaydan 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 . gettimeofdaymengembalikan nilai jam dinding, clock_gettimemengembalikan nilai jam dinding atau proses atau nilai untaian tergantung pada Clockparameter yang diteruskan ke sana. getrusagedan clockmengembalikan 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 getrusagehanya menggunakan centang kernel (biasanya 1 ms panjang) dan sebagai akibatnya tidak bisa lebih akurat daripada ms. Apakah tepat? Maka getimeofdayfungsi 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()