No. Dovrai utilizzare il codice specifico della piattaforma per farlo. Su x86 e x86-64, puoi utilizzare 'rdtsc' per leggere il contatore del timestamp.
Effettua il porting dell'assembly rdtsc che stai utilizzando.
__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;
}
Ho bisogno di un timer ad alta risoluzione per il profiler integrato nella build Linux della nostra applicazione. Il nostro profiler misura ambiti piccoli come singole funzioni, quindi necessita di una precisione del timer superiore a 25 nanosecondi.
Hai considerato oprofile
o perf
? È possibile utilizzare l'hardware del contatore delle prestazioni sulla CPU per ottenere i dati di profilatura senza aggiungere strumentazione al codice stesso. Puoi visualizzare i dati per funzione o anche per riga di codice. L '"unico" svantaggio è che non misurerà il tempo di clock consumato, ma misurerà il tempo di CPU consumato, quindi non è appropriato per tutte le indagini.