【c++基础】程序运行时间计时
使用std::chrono计算程序运行时间
#include <iostream>
#include <string>
#include <chrono>
void Run()
{
for (int i = 0; i < 1000000000; ++i)
{
}
}
int main()
{
auto beforeTime = std::chrono::steady_clock::now();
Run();
auto afterTime = std::chrono::steady_clock::now();
std::cout << "总耗时:" << std::endl;
//秒
double duration_second = std::chrono::duration<double>(afterTime - beforeTime).count();
std::cout << duration_second << "秒" << std::endl;
//毫秒级
double duration_millsecond = std::chrono::duration<double, std::milli>(afterTime - beforeTime).count();
std::cout << duration_millsecond << "毫秒" << std::endl;
//微妙级
double duration_microsecond = std::chrono::duration<double, std::micro>(afterTime - beforeTime).count();
std::cout << duration_microsecond << "微秒" << std::endl;
//纳秒级
double duration_nanosecond = std::chrono::duration<double, std::nano>(afterTime - beforeTime).count();
std::cout << duration_nanosecond << "纳秒" << std::endl;
getchar();
return 0;
}
另一种:
#include <chrono>
auto start_time = std::chrono::high_resolution_clock::now(); // 记录开始时间
// 执行计算程序
auto end_time = std::chrono::high_resolution_clock::now(); // 记录结束时间
auto duration = std::chrono::duration_cast<std::chrono::microseconds>(end_time - start_time); // 计算时间差
std::cout << "程序运行时间:" << duration.count() << " 微秒" << std::endl; // 输出程序运行时间
// 这段代码中,首先使用 std::chrono::high_resolution_clock::now() 函数记录程序开始时间和结束时间,
// 并使用 std::chrono::duration_cast 函数计算时间差。
// 最后使用 duration.count() 函数获取时间差的微秒数,以便输出程序运行时间。
steady_clock 和 high_resolution_clock 都是 C++
steady_clock 是一个稳定的时钟,它以恒定的速率提供时间信息,适用于测量时间间隔。它的精度可能不如 high_resolution_clock,但由于其稳定性,适用于需要长时间测量的应用场景。
high_resolution_clock 则是一个高精度的时钟,它提供的时间信息精度高,适用于测量程序运行时间等需要高精度计时的应用场景。但由于其精度可能受到系统时钟精度和计算机负载等因素的影响,因此不太适用于需要长时间测量的应用场景。
因此,在选择时钟类时,需要根据具体应用场景来选择适合的时钟类。