私は同じコードからclock()を複数回呼び出して、さまざまな操作の時間を計算しています。私は、これらのステップが後の操作のセットよりもおそらく速い場合でも、最初の操作のセットにはより多くの時間がかかることに気付きました。そこで、以下のサンプルコードに示すように、同じ一連の操作でテストしました。次の例では、セット1の場合0.001ms、セット2の場合〜0msを返しますが、セット1とセット2は同じオペレーションです。この動作の説明はありますか?ctime clock()は、同じプログラムで同じプログラムが2回呼び出されたときに、異なる時刻を返すのはなぜですか?
例コード:
1 #include <iostream>
2 #include <ctime>
3
4 using namespace std;
5
6 int main()
7 {
8 int x = 1000000;
9
10 //Set 1:
11 clock_t t0 = clock();
12 int y = x * x;
13 y *= x;
14 t0 = clock() - t0;
15
16 //Set 2:
17 clock_t t1 = clock();
18 int z = x * x;
19 z *= x;
20 t1 = clock() - t1;
21
22 cout << "Set1 : " << (double)t0/CLOCKS_PER_SEC * 1000 << " ms." << endl;
23 cout << "Set2 : " << (double)t1/CLOCKS_PER_SEC * 1000 << " ms." << endl;
24
25 return 0;
26 }
clock()は、このような高速動作を確実に測定するのに十分に近いほどにはありません。 – Chris
私が賭ける数千の操作の時間を平均した場合、彼らは等しいでしょう。 – sbooth
ありがとう、しかし、私はそれを知っています。この例の高速動作を、何らかのより長い動作(例えば、100万個の数字のようなクイックソート)に置き換えます。それを2回呼ぶ。最初の通話にかかった時間が長くなりました! –