C++实现在linux下统计函数耗时
时间: 2024-04-30 13:25:18 浏览: 39
可以使用C++11中的`<chrono>`库来实现函数耗时的统计。具体步骤如下:
1. 在函数开始处获取当前时间点
2. 在函数结束处获取当前时间点
3. 计算时间差,并将结果转换为毫秒
以下是一个示例代码:
```cpp
#include <iostream>
#include <chrono>
// 统计函数耗时的类
class Timer {
public:
Timer() : start_(std::chrono::high_resolution_clock::now()) {}
~Timer() {
const auto finish = std::chrono::high_resolution_clock::now();
std::cout << "Elapsed time: "
<< std::chrono::duration_cast<std::chrono::milliseconds>(finish - start_).count()
<< " ms\n";
}
private:
const std::chrono::high_resolution_clock::time_point start_;
};
// 需要统计耗时的函数
void myFunction() {
Timer timer; // 创建Timer对象,会在函数结束时自动输出耗时
// TODO: 实现函数逻辑
}
int main() {
myFunction();
return 0;
}
```
在上述示例代码中,`Timer`类的构造函数会在函数开始处获取当前时间点,而析构函数则会在函数结束处获取当前时间点,并计算时间差。`std::chrono::duration_cast<std::chrono::milliseconds>`将时间差转换为毫秒,最后通过`std::cout`输出结果。
另外,为了避免编译器对代码进行优化而影响统计结果,可以使用`volatile`关键字来修饰计时变量。例如:
```cpp
volatile int result = 0;
for (int i = 0; i < 1000000000; ++i) {
result += i;
}
std::cout << "Result: " << result << std::endl;
```
上述代码中,`result`变量被声明为`volatile`,这样可以确保编译器不会将其优化掉。