Ne. K tomu budete muset použít kód specifický pro platformu. Na x86 a x86-64 můžete použít 'rdtsc' ke čtení Time Stamp Counter.
Stačí portovat sestavu rdtsc, kterou používáte.
__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;
}
Potřebuji časovač s vysokým rozlišením pro vestavěný profiler v linuxovém sestavení naší aplikace. Náš profiler měří rozsahy tak malé jako jednotlivé funkce, takže potřebuje přesnost časovače lepší než 25 nanosekund.
Zvažovali jste oprofile
nebo perf
? Hardware čítače výkonu na vašem CPU můžete použít k získání profilovacích dat, aniž byste do samotného kódu přidávali instrumentaci. Můžete vidět data pro jednotlivé funkce nebo dokonce pro každý řádek kódu. „Jedinou“ nevýhodou je, že nebude měřit spotřebovaný čas nástěnných hodin, ale bude měřit spotřebovaný čas CPU, takže není vhodný pro všechna vyšetřování.