我是性能分析的新手,我的系统出现了性能问题。
代码片段就像
int main()
{
for(int i {0}; i < 20000; ++i)
{
//usleep(30*1000);
clock_t start = clock();
int ii = 10000000;
while (ii--);
clock_t end = clock();
double cpu_time_elapsed = ((double) (end - start)) / CLOCKS_PER_SEC * 1000;
fprintf(stdout, "%0.*f %10ld - %10ld\n", 0, cpu_time_elapsed, end, start);
}
return 0;
}
我做了几个测试:一个会评论 usleep 行,另一个不会。
输出结果为:
(处理后的输出显示持续时间和测量此持续时间的次数)
(无睡眠:几乎消耗 11ms)
11 -- 19860
12 -- 139
13 -- 1
(睡眠 30ms,广泛分散)
11 -- 337
12 -- 205
13 -- 391
14 -- 404
15 -- 344
16 -- 133
17 -- 409
18 -- 84
19 -- 279
20 -- 254
21 -- 153
22 -- 669
23 -- 1275
24 -- 1679
25 -- 2609
26 -- 2520
27 -- 594
28 -- 2131
29 -- 1533
30 -- 123
31 -- 1985
32 -- 219
33 -- 431
34 -- 750
35 -- 32
36 -- 337
37 -- 15
38 -- 50
39 -- 20
40 -- 25
41 -- 7
42 -- 2
43 -- 1
究竟是什么原因让“睡眠”对后来者产生如此巨大的影响while (ii--);
?
我该怎么做才能消除/减轻这种影响?
谢谢~