首页 > 编程语言 >【c++基础】程序运行时间计时

【c++基础】程序运行时间计时

时间:2023-04-29 22:56:45浏览次数:32  
标签:std cout 程序运行 clock chrono c++ afterTime 计时

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

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

标签:std,cout,程序运行,clock,chrono,c++,afterTime,计时
From: https://www.cnblogs.com/Balcher/p/17364592.html

相关文章

  • VS Code 配置 C/C++ 环境(编译/调试)
    1,VSCode安装点击此处跳转到官网下载安装VSCode2,环境准备这里我们安装VSCode官方推荐的方法安装即可。官方文档。2.1下载MSYS2点击进入MSYS2官网,找到Installation的Downloadtheinstaller:msys2-x86_64-20230318.exe,点击msys2-x86_64-20230318.exe下载。然后根......
  • linux c/c++程序集成python库,实现调用python函数
    为了提高开发效率,扩展开发程序的功能,我们经常会在我们的linuxc/c++进程里调用外部脚本,例如lua、python,下面,介绍下如何在自己的linuxc/c++代码里调用python脚本里的函数和类,并且将python库集成到我们自己的进程目录里,这样就不依赖系统环境是否存在python及其版本要求。 ......
  • C++ STL容器
    vector变长数组,倍增的思想string字符串,substr(),c_str()queue队列,push(),front(),pop()priority_queue优先队列,push(),top(),pop()stack栈,push(),top(),pop()deque双端队......
  • C++中的STL容器和算法
    C++STL(标准模板库)提供了一组丰富的容器和算法,使得开发者能够更加高效地编写程序。本文将介绍STL中的一些常用容器和算法。容器vectorvector是一个动态数组,可以在运行时调整大小。它的优点在于可以快速地访问元素,缺点是在插入和删除元素时需要移动后面的元素。#include<vec......
  • C++-#pargma once
    C++-#pargmaoncehttps://baike.baidu.com/item/%23pragmaonce/9468158?fr=aladdin#pragmaonce是一个比较常用的C/C++预处理指令。只在头文件的最开始加入这条预处理指令,就能够保证头文件只被编译一次。基本信息#pragmaonce是编译器相关的,有的编译器支持,有的编译器不支......
  • C++-std::this_thread::get_id()-获取线程id
    C++-std::this_thread::get_id()-获取线程idstd::this_thread::get_id()头文件:<thread>函数:std::this_thread::get_id()用例:std::thread::idthread_id=std::this_thread::get_id();std::thread对象的成员函数get_id()头文件:<thread>函数:std::thread::idget_id()用例:......
  • C++-改变终端(cout/printf)输出不同颜色的字体-Linux
    C++-改变终端(cout/printf)输出不同颜色的字体-Linuxhttps://blog.csdn.net/qq_41972382/article/details/90311102不同颜色的输出主要依据格式ESC[*m,ESC的八进制为\033,*可以是多个属性的组合,用,隔开。printf#include<iostream>usingnamespacestd;intmain(){print......
  • C++-标准异常`<exception>`
    C++-标准异常<exception>std::exception定义于头文件<exception>classexception;https://www.apiref.com/cpp-zh/cpp/error/exception.html标准库头文件<stdexcept>https://www.apiref.com/cpp-zh/cpp/header/stdexcept.htmlstd::exceptionstd::bad_allocs......
  • C++用new创建的对象和不用new创建的对象的区别
     在C++中,使用new关键字来创建对象时,与不使用new关键字来创建对象时,会产生以下几个区别:内存管理:使用new关键字来创建对象时,由编译器来决定分配内存的方式,这样可以更有效地利用内存资源。而不使用new关键字来创建对象时,则需要手动分配内存,可能会浪费一些内存资源。对象生命周期......
  • 我刚才用了dynamic_cast 你给我普及一下C++ 中这几种类型转换吧
    我刚才用了dynamic_cast你给我普及一下C++中这几种类型转换吧在C++中,有几种类型转换的方式,包括:隐式转换在一些情况下,编译器会自动进行类型转换。比如将整型变量赋值给浮点型变量,编译器就会自动将整型变量转换为浮点型变量。但是在大多数情况下,使用隐式转换可能会引起一些问......