1

私は QNX を実行しています。

関数を使用して、1 秒あたりのクロック サイクルを取得しました。

uint64_t clockPerSec = getCPS();
uint64_t currentClockCycle = getCurrentCycle();

機能

uint64_t getCPS()
{
   return (~(uint64_t)0) /SYSPAGE_ENTRY(qtime) -> cycles_per_sec;
}

uint63_t getCurrentCycle()
{
   return ClockCycles();
}

関数を実行した後

そうです

currentClockCycle = getCurrentCycle() - currentClockCycle;

アプリケーション全体で使用していないため、クロックのオーバーラン/オーバーフローはありません。追加/変更後に1つの機能のパフォーマンスを測定するためだけです.

とにかく、正しい出力が得られているかどうか疑問に思っています。

このように結果を計算したところ、

double result = static_cast<double>(clockPerSec)/currentClockCycle;
// this get me the time in second??
// then multiplied it by 1000000 to get a micro-sec measurement 

私は何か間違ったことをしていますか?

使用時

ftime(&t_start);

それから

ftime(&t_end);

この方法で差を出力すると、得られる時間が大きく、ほぼ2倍になることがわかります

最初の方法は 0.6 ミリ秒を取得し、2 番目の方法は ftime を使用して結果を 1.xx ミリ秒取得します

4

1 に答える 1