高精度计时器(微秒级)

来源:互联网 发布:从事seo要学些什么 编辑:程序博客网 时间:2024/06/04 19:53

最近要用到高精度的计时器,去网上查了资料。自已调试了下,做成了一个简单的C语言接口!

main.c文件

#include <stdio.h>#include <Windows.h>#defineTRACE_CMH printfextern "C" long long GetCurTime();extern "C" double GetTimeConsume(long long start, long long end);int main(int argc, char* argv){for (int i=0; i<10; ++i){long long startTime = GetCurTime();//开始时间Sleep(100);long long endTime = GetCurTime();//结束时间double consume = GetTimeConsume(startTime, endTime);TRACE_CMH("%f(us)\n", consume);}system("pause");return 0; }

timer.c 文件

/**************************************************************************     *  @Copyright (c) 2014, ChenMH, All rights reserved.      *  @file     : Tag_PCI_9054.cpp     *  @version  : ver 1.0      *  @author   : ChenMH     *  @date     : 2014/09/09 09:57     *  @brief    : Windows平台下的高精度计时器,可以精确到微秒级!**************************************************************************/ #ifdef __cplusplusextern "C" {#endif#include <stdio.h>#include <Windows.h>#define MS 1000000;//时间精度:微秒static LARGE_INTEGER litmp; static double dfMinus,dfFreq,dfTim;/********************************************************     *  @function :  GetCurTime    *  @brief    :  获取定时器的当前计数值    *  @author   :  ChenMH  2014/08/18 10:29 ********************************************************/ long long GetCurTime(){//如果硬件支持,获取当前计数值if(QueryPerformanceFrequency(&litmp))QueryPerformanceCounter(&litmp);elsereturn 0;return litmp.QuadPart;}/********************************************************     *  @function :  GetTimeConsume    *  @brief    :  通过开始和结束的两个计数值,来计算时间消耗。    *  @author   :  ChenMH  2014/08/18 10:39 ********************************************************/ double GetTimeConsume(long long start, long long end){QueryPerformanceFrequency(&litmp);dfFreq = (double)litmp.QuadPart;//定时器的频率dfMinus = (double)(end - start); dfTim = (dfMinus/dfFreq);//转换为秒return dfTim * MS;//转换为微秒}#ifdef __cplusplus}#endif


0 0
原创粉丝点击