|
C++中取得一个函数的运行时间
在VC++中,可以使用 `QueryPerformanceCounter` 和 `QueryPerformanceFrequency` 函数来高精度地测量函数的运行时间。以下是一个示例代码,展示如何获取一个函数的运行时间:
- #include <windows.h>
- #include <iostream>
- // 示例函数
- void ExampleFunction() {
- // 模拟一些工作
- Sleep(1000); // 暂停1秒
- }
- // 获取函数运行时间
- void MeasureExecutionTime(void (*func)()) {
- LARGE_INTEGER frequency; // 计数器频率
- LARGE_INTEGER start; // 开始时间
- LARGE_INTEGER end; // 结束时间
- // 获取计数器的频率
- QueryPerformanceFrequency(&frequency);
- // 获取开始时间
- QueryPerformanceCounter(&start);
- // 调用目标函数
- func();
- // 获取结束时间
- QueryPerformanceCounter(&end);
- // 计算运行时间(单位:毫秒)
- double elapsedTime = static_cast<double>(end.QuadPart - start.QuadPart) * 1000.0 / frequency.QuadPart;
- std::cout << "Function execution time: " << elapsedTime << " ms" << std::endl;
- }
- int main() {
- MeasureExecutionTime(ExampleFunction); // 测量 ExampleFunction 的运行时间
- return 0;
- }
复制代码
### 说明:
1. ** `QueryPerformanceFrequency` **:获取高精度计数器的频率,单位是每秒的计数次数。
2. ** `QueryPerformanceCounter` **:获取当前计数器的值,用于记录开始和结束的时间。
3. ** `ExampleFunction` **:这是一个示例函数,实际应用中可以替换为你要测量的任意函数。
4. **时间计算**:通过计算结束时间与开始时间的差值,结合计数器的频率,得到函数的运行时间(单位为毫秒)。
运行该程序后,你将看到 `ExampleFunction` 的执行时间输出。你可以根据需要替换 `ExampleFunction` 为其他需要测量的函数。
|
|