C++ 求时差

C++ 求时差的三种方法

【1】标准C库方式

示例代码

复制代码
 1 #include <ctime>
 2 #include <iostream>
 3 using namespace std;
 4 
 5 void function()
 6 {
 7     int step = 100000000;
 8     while (step--);
 9 }
10 
11 int main()
12 {
13     clock_t start = clock();  //获取当前系统时间
14 
15     function();
16 
17     clock_t end = clock();
18 
19     double cost = ((double)(end - start)) / CLOCKS_PER_SEC;
20 
21     cout << "cost time : " << cost << endl;
22 
23     system("pause");
24 }
25 
26 /* result:
27 cost time : 0.166
28 请按任意键继续. . .
29 */
复制代码

【2】C++库方式

C++11之后才引入

示例代码:

复制代码
 1 #include <chrono>
 2 #include <iostream>
 3 
 4 using namespace std;
 5 
 6 void function()
 7 {
 8     int step = 100000000;
 9     while (step--);
10 }
11 
12 int main() 
13 {
14     auto beginTime = std::chrono::high_resolution_clock::now();
15 
16     function();
17 
18     auto endTime = std::chrono::high_resolution_clock::now();
19     auto elapsedTime = std::chrono::duration_cast<std::chrono::microseconds>(endTime - beginTime);
20 
21     double cost = (double)elapsedTime.count();
22 
23     cout << "cost time : " << cost << endl;
24 
25     system("pause");
26 }
27 
28 /* result:
29 cost time : 164445
30 请按任意键继续. . .
31 */
复制代码

【3】windows API方式

示例代码:

复制代码
 1 #include <windows.h>
 2 #include <iostream>
 3 
 4 using namespace std;
 5 
 6 void function()
 7 {
 8     int step = 100000000;
 9     while (step--);
10 }
11 
12 int main()
13 {
14     //DWORD dwStart = GetTickCount();
15 
16     ULONGLONG dwStart = GetTickCount64();
17 
18     function();
19 
20     ULONGLONG dwEnd = GetTickCount64();
21     
22     auto cost = (dwEnd - dwStart);
23 
24     cout << "cost time : " << cost << endl;
25 
26     system("pause");
27 }
28 
29 /* result:
30 cost time : 157
31 请按任意键继续. . .
32 */
复制代码

为什么第14行,我们把GetTickCount这个函数注释了呢?请参见Visual Studio 提示内容:

posted @   kaizenly  阅读(1659)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
历史上的今天:
2013-12-02 数据结构--堆
2013-12-02 赫夫曼树
打赏

喜欢请打赏

扫描二维码打赏

微信打赏

点击右上角即可分享
微信分享提示