gpt4 book ai didi

c++ - 为什么 ctime clock() 在同一程序为同一操作调用两次时给出不同的时间?

转载 作者:太空宇宙 更新时间:2023-11-04 08:11:19 27 4
gpt4 key购买 nike

我从同一代码多次调用 clock() 来计算不同操作集所花费的时间。我注意到第一组操作需要更多时间,即使这些步骤据说比后面的操作组更快。因此,我使用相同的一组操作进行了测试,如下面的示例代码所示。以下示例为第 1 组返回 0.001 毫秒,为第 2 组返回 ~ 0 毫秒,尽管第 1 组和第 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(3) manual 的第一句中找到解释。页:

The clock() function returns an approximation of processor time used by the program.

特别强调“近似”部分。

现代 CPU 可以轻松执行多条乘法指令(如代码中的指令)也无济于事,所有这些都在单个时钟滴答的空间内完成。再加上 CPU 缓存、流水线和抢占式多任务处理,这种测量几乎毫无意义。

关于c++ - 为什么 ctime clock() 在同一程序为同一操作调用两次时给出不同的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39176732/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com