いいえ。これを行うには、プラットフォーム固有のコードを使用する必要があります。 x86 および x86-64 では、'rdtsc' を使用してタイム スタンプ カウンターを読み取ることができます。
使用している rdtsc アセンブリを移植するだけです。
__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;
}
<ブロック引用>
アプリケーションの Linux ビルドに組み込まれたプロファイラー用の高解像度タイマーが必要です。私たちのプロファイラーは、個々の関数と同じくらい小さいスコープを測定するため、25 ナノ秒よりも優れたタイマー精度が必要です。
oprofile
を検討しましたか または perf
? CPU のパフォーマンス カウンター ハードウェアを使用して、コード自体にインストルメンテーションを追加せずにプロファイリング データを取得できます。関数ごと、またはコード行ごとにデータを表示できます。 「唯一の」欠点は、消費されたウォール クロック時間を測定しないことです。消費された CPU 時間を測定するため、すべての調査には適していません。