#include <iostream>
#include <chrono>
#define MAX_SIZE 100000
int main() {
// 获取当前时间点
auto start = std::chrono::high_resolution_clock::now();
// 运行需要测试时间的程序
int array[MAX_SIZE];
for (int i = 0; i < MAX_SIZE; ++i) {
array[i] = i + 1;
}
// 获取程序运行后的时间点
auto end = std::chrono::high_resolution_clock::now();
// 计算时间差
std::chrono::duration<double> duration = end - start;
// 将时间差转换为毫秒并输出
std::cout << "程序运行时间为: " << duration.count() * 1000 << " 毫秒" << std::endl;
return 0;
}
包装到函数
#include <chrono>
#include <iostream>
// 测量函数
template <typename Func, typename... Args>
void measureTime(Func func, Args &&...args) {
auto start = std::chrono::high_resolution_clock::now();
func(std::forward<Args>(args)...);
auto end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> duration = end - start;
std::cout << "程序运行时间为: " << duration.count() * 1000 << " 毫秒" << std::endl;
}
int main() {
auto test= []() {
int array[100000];
for (int i = 0; i < 100000; ++i) {
array[i] = i;
}
};
measureTime(test);
return 0;
}
类的构造和析构 计算时间差
#include <chrono>
#include <iostream>
constexpr int max_num = 1000000;
int array[max_num];
class Timer {
public:
Timer() { now = std::chrono::steady_clock::now(); }
~Timer() { std::cout << std::chrono::duration<double>(std::chrono::steady_clock::now() - now) << std::endl; }
private:
std::chrono::time_point<std::chrono::steady_clock> now;
};
int main() {
{
Timer t;
for (int i = 0; i < max_num; ++i) {
array[i] = i;
}
}
}
包装到头文件
// Timer.h
#ifndef TIMER_H
#define TIMER_H
#include <chrono>
#include <iostream>
class Timer {
public:
Timer() { now = std::chrono::steady_clock::now(); }
~Timer() { std::cout << std::chrono::duration<double>(std::chrono::steady_clock::now() - now) << std::endl; }
private:
std::chrono::time_point<std::chrono::steady_clock> now;
};
#endif