`

C++统计代码运行时间计时器(转)

 
阅读更多

转自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 ;  

}  

 

<audio controls="controls" style="display: none;"></audio>

分享到:
评论

相关推荐

    C++实现统计代码运行时间计时器的简单实例

    C++实现统计代码运行时间计时器的简单实例 一、前言  这里记下从网上找到的一些自己比较常用的C++计时代码 二、Linux下精确至毫秒 #include #include #include double get_wall_time() { struct timeval ...

    c/c++ 实现程序运行时间精确测量

    在C/C++编程中,精确地测量程序运行时间是一项重要的任务,这有助于优化代码性能、调试和理解程序的效率。本文将深入探讨如何利用C/C++实现程序运行时间的精确测量,精度可达毫秒级别。 首先,我们有两种常用的方法...

    C++计时器类

    本篇将详细探讨如何构建一个C++计时器类,以及如何利用它来获取当前间隔时间、进行计时控制以及统计FPS(Frames Per Second)帧数。 首先,`AITimer.cpp`和`AITimer.h`是实现计时器类的源代码文件。`AITimer.h`通常...

    辩论倒计时_辩论_辩论倒计时器_计时器_

    "辩论倒计时"是一款专为辩论活动设计的计时器应用,旨在帮助参与者准确、高效地进行时间控制。本文将深入探讨该应用的核心功能和其在辩论活动中的应用价值。 首先,我们来理解"辩论倒计时"的主要功能。作为一款计时...

    C++编程中计算时间消耗的算法

    - **其他时间测量方法**:除了`clock()`函数外,还可以使用`&lt;chrono&gt;`库中的高分辨率计时器来进行更精确的时间测量。 通过以上介绍,我们可以有效地利用`clock()`函数来测量C++程序的运行时间,这对于性能分析和...

    赛跑计时器

    【赛跑计时器】是一款专门针对体育赛事中赛跑项目设计的计时软件,它能够连续记录每一位运动员到达终点的精确时间,为裁判提供准确的成绩统计依据。这款计时器在设计上考虑了体育赛事的实时性与精确性需求,确保在高...

    贪吃蛇小游戏源代码(C++程序设计)

    开发者可能使用计时器或者循环来控制每帧的时间间隔,以此调整蛇移动的速度。速度的变化可能会影响游戏的难度,更快速度的蛇将对玩家的反应速度提出更高要求。 “排名”系统是游戏的一个激励机制,它记录并展示玩家...

    vc++ 毫秒计时_高精度时间统计 .rar

    1. **QueryPerformanceCounter**:这是Windows API提供的一种高精度计时器,它可以提供纳秒级别的精度。通过调用`QueryPerformanceCounter()`函数,我们可以获取自系统启动以来的周期数,配合`...

    C++ benchmarking framework.zip

    C++提供了一些内置的高精度计时器,如`std::chrono`库,用于测量微秒甚至纳秒级别的运行时间。框架会使用这些计时器来记录并分析代码执行的时间。 2. **重复执行**:为了得到稳定且可信赖的结果,基准测试通常会多...

    基于STM32控制器的设备运行时间自动统计装置设计.rar

    标题中的“基于STM32控制器的设备运行时间自动统计装置设计”揭示了这个项目的核心,即使用STM32微控制器来开发一个系统,该系统能够自动记录并累计设备的运行时间。STM32是一款广泛应用的32位微控制器,由意法...

    总结UNIX/LINUX下C++程序计时的方法

    良好的计时器可帮助程序开发人员确定程序的性能瓶颈,或对不同算法进行性能比较。但要精确测量程序的运行时间并不容易,因为进程切换、中断、共享的多用户、网络流量、高速缓存访问及转移预测等因素都会对程序计时...

    Lightweight profiler library for c++.zip

    - **函数计时器**:测量特定函数或代码块的执行时间。 - **调用树分析**:展示函数调用关系及其耗时,帮助理解执行流程。 - **事件追踪**:记录特定事件的发生,如I/O操作、内存分配等。 - **统计信息**:提供平均...

    记录排序算法运行时间(精确到微秒)和移动步数

    为了更精确地测量这些快速算法的运行时间,通常我们会采用更高精度的计时器,例如C++中的`chrono`库或者Python的`timeit`模块。这些工具能够测量微秒甚至纳秒级别的运行时间,从而确保对快速排序算法的准确评估。 ...

    linux-Pomidor是一个简单和很酷的番茄钟技术计时器

    Linux中的Pomidor是一款基于番茄工作法(Pomodoro Technique)设计的计时器工具。番茄工作法是一种时间管理方法,通过将工作分为25分钟的工作块(称为“番茄”),并间隔5分钟的短暂休息,来提高专注力和效率。...

    c++ 猜数字游戏

    - **反馈机制**:在游戏结束时给出时间统计和表现评价。 - 示例代码: ```cpp if (difficulty == 1 && time_used &gt; 5) { cout 不给力哦亲~~这么简单竟然要这么久、回去再练个两三年再来吧!!" ; } ``` ####...

    C++编写的俄罗斯方块游戏

    4. **事件驱动编程**:游戏通常基于事件驱动编程模型,监听用户的键盘输入、计时器事件等。在C++中,这可能通过事件循环和回调函数来实现,确保游戏在等待用户操作时不会阻塞。 5. **数据结构**:为了高效地存储和...

    精确的计时程序

    虽然这样的计时器在测量短时间间隔时非常有用,但其资源消耗较高,可能不适合长时间运行或资源受限的环境。 计时程序通常依赖于操作系统的定时器接口来获取时间信息。在VC6中,开发者可能会使用Windows API函数`...

    TestCE.zip_CPU usage C++_made

    在Windows系统中,我们可以使用`QueryPerformanceCounter`和`QueryPerformanceFrequency`函数来获取高性能计时器的信息。通过对比两次采样间的计数值变化,并除以频率,我们可以计算出CPU使用时间。同时,还需要...

    单机版考试系统C++

    6. **计时功能**:考试通常有时间限制,因此系统需要具备计时器功能,当时间到时自动结束考试。 7. **答案检查与评分**:系统需能自动检查用户的答案,对比正确答案给予得分。对于选择题,这相对简单;对于填空题或...

Global site tag (gtag.js) - Google Analytics