转自http://blog.csdn.net/ap1005834/article/details/53419647
一、前言
这里记下从网上找到的一些自己比较常用的C++计时代码
二、Linux下精确至毫秒
#include <sys/time.h> #include <iostream> #include <time.h> double get_wall_time() { struct timeval time ; if (gettimeofday(&time,NULL)){ return 0; } return (double)time.tv_sec + (double)time.tv_usec * .000001; } int main() { unsigned int t = 0; double start_time = get_wall_time() while(t++<10e+6); double end_time = get_wall_time() std::cout<<"循环耗时为:"<<end_time-start_time<<"ms"; return 0; }
三、Windows下精确至毫秒
#include <windows.h> #include <iostream> int main() { DWORD start, stop; unsigned int t = 0; start = GetTickCount(); while (t++ < 10e+6); stop = GetTickCount(); printf("time: %lld ms\n", stop - start); return 0; }
试验中,发现貌似getTickCount函数会有10几毫秒的误差,囧。。。
四、Windows下精确至微秒
//MyTimer.h// #ifndef __MyTimer_H__ #define __MyTimer_H__ #include <windows.h> class MyTimer { private: int _freq; LARGE_INTEGER _begin; LARGE_INTEGER _end; public: long costTime; // 花费的时间(精确到微秒) public: MyTimer() { LARGE_INTEGER tmp; QueryPerformanceFrequency(&tmp);//QueryPerformanceFrequency()作用:返回硬件支持的高精度计数器的频率。 _freq = tmp.QuadPart; costTime = 0; } void Start() // 开始计时 { QueryPerformanceCounter(&_begin);//获得初始值 } void End() // 结束计时 { QueryPerformanceCounter(&_end);//获得终止值 costTime = (long)((_end.QuadPart - _begin.QuadPart) * 1000000 / _freq); } void Reset() // 计时清0 { costTime = 0; } }; #endif //main.cpp #include "MyTimer.h" #include <iostream> int main() { MyTimer timer; unsigned int t = 0; timer.Start(); while (t++ < 10e+5); timer.End(); std::cout << "耗时为:" << timer.costTime << "us"; return 0 ; }
相关推荐
C++实现统计代码运行时间计时器的简单实例 一、前言 这里记下从网上找到的一些自己比较常用的C++计时代码 二、Linux下精确至毫秒 #include #include #include double get_wall_time() { struct timeval ...
在C/C++编程中,精确地测量程序运行时间是一项重要的任务,这有助于优化代码性能、调试和理解程序的效率。本文将深入探讨如何利用C/C++实现程序运行时间的精确测量,精度可达毫秒级别。 首先,我们有两种常用的方法...
本篇将详细探讨如何构建一个C++计时器类,以及如何利用它来获取当前间隔时间、进行计时控制以及统计FPS(Frames Per Second)帧数。 首先,`AITimer.cpp`和`AITimer.h`是实现计时器类的源代码文件。`AITimer.h`通常...
"辩论倒计时"是一款专为辩论活动设计的计时器应用,旨在帮助参与者准确、高效地进行时间控制。本文将深入探讨该应用的核心功能和其在辩论活动中的应用价值。 首先,我们来理解"辩论倒计时"的主要功能。作为一款计时...
- **其他时间测量方法**:除了`clock()`函数外,还可以使用`<chrono>`库中的高分辨率计时器来进行更精确的时间测量。 通过以上介绍,我们可以有效地利用`clock()`函数来测量C++程序的运行时间,这对于性能分析和...
【赛跑计时器】是一款专门针对体育赛事中赛跑项目设计的计时软件,它能够连续记录每一位运动员到达终点的精确时间,为裁判提供准确的成绩统计依据。这款计时器在设计上考虑了体育赛事的实时性与精确性需求,确保在高...
开发者可能使用计时器或者循环来控制每帧的时间间隔,以此调整蛇移动的速度。速度的变化可能会影响游戏的难度,更快速度的蛇将对玩家的反应速度提出更高要求。 “排名”系统是游戏的一个激励机制,它记录并展示玩家...
1. **QueryPerformanceCounter**:这是Windows API提供的一种高精度计时器,它可以提供纳秒级别的精度。通过调用`QueryPerformanceCounter()`函数,我们可以获取自系统启动以来的周期数,配合`...
C++提供了一些内置的高精度计时器,如`std::chrono`库,用于测量微秒甚至纳秒级别的运行时间。框架会使用这些计时器来记录并分析代码执行的时间。 2. **重复执行**:为了得到稳定且可信赖的结果,基准测试通常会多...
标题中的“基于STM32控制器的设备运行时间自动统计装置设计”揭示了这个项目的核心,即使用STM32微控制器来开发一个系统,该系统能够自动记录并累计设备的运行时间。STM32是一款广泛应用的32位微控制器,由意法...
良好的计时器可帮助程序开发人员确定程序的性能瓶颈,或对不同算法进行性能比较。但要精确测量程序的运行时间并不容易,因为进程切换、中断、共享的多用户、网络流量、高速缓存访问及转移预测等因素都会对程序计时...
- **函数计时器**:测量特定函数或代码块的执行时间。 - **调用树分析**:展示函数调用关系及其耗时,帮助理解执行流程。 - **事件追踪**:记录特定事件的发生,如I/O操作、内存分配等。 - **统计信息**:提供平均...
为了更精确地测量这些快速算法的运行时间,通常我们会采用更高精度的计时器,例如C++中的`chrono`库或者Python的`timeit`模块。这些工具能够测量微秒甚至纳秒级别的运行时间,从而确保对快速排序算法的准确评估。 ...
Linux中的Pomidor是一款基于番茄工作法(Pomodoro Technique)设计的计时器工具。番茄工作法是一种时间管理方法,通过将工作分为25分钟的工作块(称为“番茄”),并间隔5分钟的短暂休息,来提高专注力和效率。...
- **反馈机制**:在游戏结束时给出时间统计和表现评价。 - 示例代码: ```cpp if (difficulty == 1 && time_used > 5) { cout 不给力哦亲~~这么简单竟然要这么久、回去再练个两三年再来吧!!" ; } ``` ####...
4. **事件驱动编程**:游戏通常基于事件驱动编程模型,监听用户的键盘输入、计时器事件等。在C++中,这可能通过事件循环和回调函数来实现,确保游戏在等待用户操作时不会阻塞。 5. **数据结构**:为了高效地存储和...
虽然这样的计时器在测量短时间间隔时非常有用,但其资源消耗较高,可能不适合长时间运行或资源受限的环境。 计时程序通常依赖于操作系统的定时器接口来获取时间信息。在VC6中,开发者可能会使用Windows API函数`...
在Windows系统中,我们可以使用`QueryPerformanceCounter`和`QueryPerformanceFrequency`函数来获取高性能计时器的信息。通过对比两次采样间的计数值变化,并除以频率,我们可以计算出CPU使用时间。同时,还需要...
6. **计时功能**:考试通常有时间限制,因此系统需要具备计时器功能,当时间到时自动结束考试。 7. **答案检查与评分**:系统需能自动检查用户的答案,对比正确答案给予得分。对于选择题,这相对简单;对于填空题或...