【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 则是一个高精度的时钟,它提供的时间信息精度高,适用于测量程序运行时间等需要高精度计时的应用场景。但由于其精度可能受到系统时钟精度和计算机负载等因素的影响,因此不太适用于需要长时间测量的应用场景。

因此,在选择时钟类时,需要根据具体应用场景来选择适合的时钟类。

posted @ 2023-04-29 22:38  乞力马扎罗山的雪  阅读(285)  评论(0编辑  收藏  举报