C++记录程序运行时间的4方法

2024-06-22 18:44

本文主要是介绍C++记录程序运行时间的4方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 使用 <chrono> 库(C++11及以后版本)

<chrono> 库提供了高精度的时间测量功能。

#include <iostream>  
#include <chrono>  int main() {  auto start = std::chrono::high_resolution_clock::now();  // Your code here  // ...  auto stop = std::chrono::high_resolution_clock::now();  auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(stop - start).count();  std::cout << "Elapsed time: " << duration << " ms\n";  return 0;  
}

2. 使用 <ctime> 库(较旧但常用的方法)

<ctime> 库提供了基于系统时间的函数clock()。

#include <iostream>  
#include <ctime>  int main() {  clock_t start = clock(); //也可以double start = clock(); // Your code here  // ...  clock_t end = clock();  double cpu_time_used = static_cast<double>(end - start) / CLOCKS_PER_SEC;//  /CLOCKS_PER_SEC将结果转为以秒为单位std::cout << "CPU time used: " << cpu_time_used << " s\n";  return 0;  
}

3、使用第三方库(如Boost.Timer)

Boost库提供了一个计时器模块,用于测量代码块的执行时间。

首先,你需要安装Boost库,并在项目中包含Boost.Timer头文件。

#include <boost/timer/timer.hpp>  
#include <iostream>  int main() {  boost::timer::auto_cpu_timer t; // 自动测量和打印执行时间  // Your code here  // ...  return 0;  
}

4. 使用Windows API函数(Windows平台特有)

4.1 使用 GetTickCount()

这个函数返回从系统启动开始经过的毫秒数。GetTickCount() 的精度在1到15毫秒之间,并且其值会在大约49.7天后回绕。

#include <windows.h>  
#include <iostream>  int main() {  DWORD start = GetTickCount();  // ... 执行你的代码 ...  DWORD end = GetTickCount();  std::cout << "程序运行时间: " << (end - start) << " 毫秒" << std::endl;  return 0;  
}

4.2 使用 QueryPerformanceCounter() 和 QueryPerformanceFrequency()

这两个函数提供了更高的精度,通常在微秒级别。

#include <windows.h>  
#include <iostream>  int main() {  LARGE_INTEGER start, end, freq;  QueryPerformanceFrequency(&freq);  QueryPerformanceCounter(&start);  // ... 执行你的代码 ...  QueryPerformanceCounter(&end);  double elapsedTime = (double)(end.QuadPart - start.QuadPart) / freq.QuadPart * 1000.0; // 毫秒  std::cout << "程序运行时间: " << elapsedTime << " 毫秒" << std::endl;  return 0;  
}

 

 

这篇关于C++记录程序运行时间的4方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1085106

相关文章

sql语句字段截取方法

《sql语句字段截取方法》在MySQL中,使用SUBSTRING函数可以实现字段截取,下面给大家分享sql语句字段截取方法,感兴趣的朋友一起看看吧... 目录sql语句字段截取sql 截取表中指定字段sql语句字段截取1、在mysql中,使用SUBSTRING函数可以实现字段截取。例如,要截取一个字符串字

JAVA数组中五种常见排序方法整理汇总

《JAVA数组中五种常见排序方法整理汇总》本文给大家分享五种常用的Java数组排序方法整理,每种方法结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录前言:法一:Arrays.sort()法二:冒泡排序法三:选择排序法四:反转排序法五:直接插入排序前言:几种常用的Java数组排序

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.

Python将字符串转换为小写字母的几种常用方法

《Python将字符串转换为小写字母的几种常用方法》:本文主要介绍Python中将字符串大写字母转小写的四种方法:lower()方法简洁高效,手动ASCII转换灵活可控,str.translate... 目录一、使用内置方法 lower()(最简单)二、手动遍历 + ASCII 码转换三、使用 str.tr

Python处理超大规模数据的4大方法详解

《Python处理超大规模数据的4大方法详解》在数据的奇妙世界里,数据量就像滚雪球一样,越变越大,从最初的GB级别的小数据堆,逐渐演变成TB级别的数据大山,所以本文我们就来看看Python处理... 目录1. Mars:数据处理界的 “变形金刚”2. Dask:分布式计算的 “指挥家”3. CuPy:GPU

Java中的StringUtils.isBlank()方法解读

《Java中的StringUtils.isBlank()方法解读》:本文主要介绍Java中的StringUtils.isBlank()方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录所在库及依赖引入方法签名方法功能示例代码代码解释与其他方法的对比总结StringUtils.isBl

CentOS7增加Swap空间的两种方法

《CentOS7增加Swap空间的两种方法》当服务器物理内存不足时,增加Swap空间可以作为虚拟内存使用,帮助系统处理内存压力,本文给大家介绍了CentOS7增加Swap空间的两种方法:创建新的Swa... 目录在Centos 7上增加Swap空间的方法方法一:创建新的Swap文件(推荐)方法二:调整Sww

QT6中绘制UI的两种方法详解与示例代码

《QT6中绘制UI的两种方法详解与示例代码》Qt6提供了两种主要的UI绘制技术:​​QML(QtMeta-ObjectLanguage)​​和​​C++Widgets​​,这两种技术各有优势,适用于不... 目录一、QML 技术详解1.1 QML 简介1.2 QML 的核心概念1.3 QML 示例:简单按钮

Python日期和时间完全指南与实战

《Python日期和时间完全指南与实战》在软件开发领域,‌日期时间处理‌是贯穿系统设计全生命周期的重要基础能力,本文将深入解析Python日期时间的‌七大核心模块‌,通过‌企业级代码案例‌揭示最佳实践... 目录一、背景与核心价值二、核心模块详解与实战2.1 datetime模块四剑客2.2 时区处理黄金法

macOS Sequoia 15.5 发布: 改进邮件和屏幕使用时间功能

《macOSSequoia15.5发布:改进邮件和屏幕使用时间功能》经过常规Beta测试后,新的macOSSequoia15.5现已公开发布,但重要的新功能将被保留到WWDC和... MACOS Sequoia 15.5 正式发布!本次更新为 Mac 用户带来了一系列功能强化、错误修复和安全性提升,进一步增