私はこのメソッドを使用しています:Measure execution time in C (on Windows)すべてのスレッドの実行時間を測定します。私はWindowsで、VC++を使っています。このようなスレッド変更の実行時間
何か:
//initialize start, end, frequency
std::thread thread1(...);
// and so on I initialise all the threads
thread1.join();
//join all threads
//time = (start-end)/frequency
printf(time);
は、私はそれを複数回実行し、私は多くの場合、異なる実行時間を取得します。私は30%のバリエーションを持っています(これは100から70の間の値を取得することを意味します)。なぜ私は理解できないのですか? 30%は小さな変化ではありません。
おかげ
どのように時間を測定しますか?後者がシステム負荷に依存するため、天文学を測定する場合はプロセッサ時間を測定することを検討してください。 – alexeykuzmin0
時間測定の分解能は、スケジューリングおよびその他の要因によって制限されます。スレッド実行時間が短いほど、タイミングが不正確になります。私は平均的に多くの走りを取るだろう。 – Robinson
@ alexeykuzmin0質問の回答と同じ私はペーストをコピーしました。 QueryPerformanceCounterの使用。 – userDS