2011-08-16 8 views
6

std::clock()コールの解像度を測定することはできますか?それとも、影響を受けずに観察することができないという問題ですか?`std :: clock()`の解像度を測定する

私は、次の素朴なベンチマークを書いた:

#include <ctime> 
#include <iostream> 

int main() { 
    std::clock_t initial = std::clock(); 
    std::clock_t current; 
    while (initial == (current = std::clock())); 
    std::cout << "Initial: " << initial << std::endl; 
    std::cout << "Current: " << current << std::endl; 
    std::cout << "Precision: " << (static_cast<double>(current - initial)/CLOCKS_PER_SEC) << "s" << std::endl; 
} 

私はそれを数百回を実行した、それは常に0.01sを出力します。

私の質問は以下のとおりです。

  • は、上記のコードclock()の解像度を測定するための良い方法ですか?
  • 何も問題がなければ何が問題なのですか?どのように改善することができますか?
+1

「精度」とはどういう意味ですか?別の「適切な」時計を参照することなく、それをどのように測定しますか? –

+0

毎回最初のループで壊れますか? @Kerrek SB – James

+1

あなたは私の質問を言い換えています。 – StackedCrooked

答えて

2

あなたは並べ替えることができます。あなたがやっているようなものは、最初に良い近似である です。しかし、私はそれがどれほど有用であるかはわかりません:それは の解像度を決定しますが、それでも精度については何も教えてくれません。例えばclockのようなWindowsの場合 は非常に不正確なので は役に立たない。

関連する問題