Tidak. Anda harus menggunakan kode khusus platform untuk melakukannya. Pada x86 dan x86-64, Anda dapat menggunakan 'rdtsc' untuk membaca Penghitung Stempel Waktu.
Cukup port rakitan rdtsc yang Anda gunakan.
__inline__ uint64_t rdtsc(void) {
uint32_t lo, hi;
__asm__ __volatile__ ( // serialize
"xorl %%eax,%%eax \n cpuid"
::: "%rax", "%rbx", "%rcx", "%rdx");
/* We cannot use "=A", since this would use %rax on x86_64 and return only the lower 32bits of the TSC */
__asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi));
return (uint64_t)hi << 32 | lo;
}
Saya memerlukan pengatur waktu resolusi tinggi untuk profiler tersemat di Linux build aplikasi kami. Profiler kami mengukur cakupan sekecil fungsi individual, sehingga memerlukan presisi pengatur waktu yang lebih baik dari 25 nanodetik.
Sudahkah Anda mempertimbangkan oprofile
atau perf
? Anda dapat menggunakan perangkat keras penghitung kinerja di CPU untuk mendapatkan data pembuatan profil tanpa menambahkan instrumentasi ke kode itu sendiri. Anda dapat melihat data per fungsi, atau bahkan per baris kode. Kelemahan "satu-satunya" adalah tidak akan mengukur waktu yang digunakan jam dinding, tetapi akan mengukur waktu CPU yang digunakan, sehingga tidak sesuai untuk semua penyelidikan.