您的位置:首页 > 编程语言 > C语言/C++

C++简单的函数计时方法

2008-07-17 14:21 288 查看
这里提供一个简单的函数计时方法,利用QueryPerformanceFrequency和QueryPerformanceCount函数进行精确计时,这是最精确的计时方法。
原理是在函数被调用时记录时间,结束时利用局部对象的析构函数再记录一次时间,将这个时间差累积到对应的函数的统计数据中。当程序退出时,全局对象释放,将所有函数的数据输出到调试窗口。使用时,需要再函数开头位置插入一条宏:_PF。需要计时的函数内都插入一条这样的宏。为了方便,宏被定义的比较短。

FunctionName ActiveTime Average Clled
WinMain 5.480105 5.480105 1
MsgProc 0.975687 0.015245 64
InitD3D 0.222094 0.222094 1
InitGeometry 0.004631 0.004631 1
Render 4.876714 0.021771 224
SetupMatrices 0.001405 0.000006 224
Cleanup 0.209167 0.209167 1

#define PERFDATA_INIT_SIZE 32
#define PERFDATA_INC_SIZE 32
class PerformanceDaemon
PerformanceDaemon Perf;
class PerformanceWatcher

#ifdef _DEBUG
#define _PF \
static DWORD __PerfCounter=0xFFFF;\
PerformanceWatcher __PerfWatcher(__FUNCTION__,__PerfCounter);
#else
#define _PF
#endif

VOID Cleanup()
// File: callcaphooks.c

#include <stdio.h>
int main();

void _CAP_Enter_Function(void *p)
void _CAP_Exit_Function(void *p)
if (p != main)
printf("Leaving function (at address %p) at %d\n",
p, GetTickCount());
return;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: