0

pow()のクロックティックをテストしようとしています。

clock_t startTime = clock();
for (int ii = 0 ; ii < moreIter ; ++ii)
{
   for (int i = 0 ; i < totalIte ; ++i)
   P0Table[i] = pow( 1 + baseTable[i] + baseTable1[i]  , expTablr[i]);
}
clock_t endTime = clock();
clock_t powTime = endTime - startTime;

moreIterが1で、totalIteが5000の場合、powTimeは常に0です。

私はちょうどフォローしました: http ://www.cplusplus.com/reference/clibrary/ctime/clock/

なぜ ?

どんな助けでもありがたいです。

4

2 に答える 2

3

C++11<chrono>ヘッダーを使用してみてください。

typedef std::chrono::high_resolution_clock Clock;

auto start = Clock::now();
/* do work */
auto end = Clock::now();

auto timeTaken = end - start;
于 2012-11-02T19:34:07.457 に答える
2

clock()の解像度は特に高くはありません。ゼロ以外の結果を得るには、さらに多くの反復が必要になる場合があります。

Linuxでは、CPU時間はCONFIG_HZ設定に応じてiircが考慮されます。最近では、通常100〜1000Hzです。したがって、1〜10ミリ秒の解像度が最高です。

clock_gettime(...、CLOCK_MONOTONIC)を使用すると、ナノ秒の解像度の実時間を取得できますが、もちろん、そのような解像度では、呼び出し自体に少し時間がかかることを考慮に入れる必要があります(IIRCは最後にチェックした約20 ns) 。

于 2012-11-02T19:25:05.400 に答える