C++记录程序运行时间的4方法

草海桐 2024-08-04 11:35:01 阅读 60

目录

1. 使用 <chrono>库(C++11及以后版本)

2. 使用<ctime>库(较旧但常用的方法)

3、使用第三方库(如Boost.Timer)

4. 使用Windows API函数(Windows平台特有)


1. 使用 <code><chrono> 库(C++11及以后版本)

<chrono> 库提供了高精度的时间测量功能。

#include <iostream>

#include <chrono>

int main() {

auto start = std::chrono::high_resolution_clock::now();

// Your code here

// ...

auto stop = std::chrono::high_resolution_clock::now();

auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(stop - start).count();

std::cout << "Elapsed time: " << duration << " ms\n";

return 0;

}

2. 使用 <ctime> 库(较旧但常用的方法)

<ctime> 库提供了基于系统时间的函数clock()。

#include <iostream>

#include <ctime>

int main() {

clock_t start = clock(); //也可以double start = clock();

// Your code here

// ...

clock_t end = clock();

double cpu_time_used = static_cast<double>(end - start) / CLOCKS_PER_SEC;

// /CLOCKS_PER_SEC将结果转为以秒为单位

std::cout << "CPU time used: " << cpu_time_used << " s\n";

return 0;

}

3、使用第三方库(如Boost.Timer)

Boost库提供了一个计时器模块,用于测量代码块的执行时间。

首先,你需要安装Boost库,并在项目中包含Boost.Timer头文件。

#include <boost/timer/timer.hpp>

#include <iostream>

int main() {

boost::timer::auto_cpu_timer t; // 自动测量和打印执行时间

// Your code here

// ...

return 0;

}

4. 使用Windows API函数(Windows平台特有)

4.1 使用 GetTickCount()

这个函数返回从系统启动开始经过的毫秒数。GetTickCount() 的精度在1到15毫秒之间,并且其值会在大约49.7天后回绕。

#include <windows.h>

#include <iostream>

int main() {

DWORD start = GetTickCount();

// ... 执行你的代码 ...

DWORD end = GetTickCount();

std::cout << "程序运行时间: " << (end - start) << " 毫秒" << std::endl;

return 0;

}

4.2 使用 QueryPerformanceCounter() 和 QueryPerformanceFrequency()

这两个函数提供了更高的精度,通常在微秒级别。

#include <windows.h>

#include <iostream>

int main() {

LARGE_INTEGER start, end, freq;

QueryPerformanceFrequency(&freq);

QueryPerformanceCounter(&start);

// ... 执行你的代码 ...

QueryPerformanceCounter(&end);

double elapsedTime = (double)(end.QuadPart - start.QuadPart) / freq.QuadPart * 1000.0; // 毫秒

std::cout << "程序运行时间: " << elapsedTime << " 毫秒" << std::endl;

return 0;

}



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。