windows下的函数耗时统计工具

先上代码:
#include <Windows.h>

/** @class CFuncTimeTestter 
 *  @brief 函数执行时间测试器
 */
class CFuncTimeTestter
{
public:
    explicit CFuncTimeTestter(const std::string& moduleName="",  const std::string& testName = "")
        : m_testName(testName),
          m_moduleName(moduleName)
    {
        QueryPerformanceCounter(&m_begintime);
        QueryPerformanceFrequency(&m_frequency);
    };

    ~CFuncTimeTestter()
    {        
        QueryPerformanceCounter(&m_endtime);
        your_log_print(m_moduleName.c_str(), "%s 执行完成,耗时%dms", m_testName.c_str(), (m_endtime.QuadPart-m_begintime.QuadPart)*1000 / m_frequency.QuadPart);
    };
private:
    std::string m_testName;
    std::string m_moduleName;
    LARGE_INTEGER m_frequency;
    LARGE_INTEGER m_begintime;
    LARGE_INTEGER m_endtime;

};
耗时统计类使用了windows的高精度性能计数函数,我们来看看QueryPerformanceCounter的介绍:
函数QueryPerformanceCounter用于得到高精度计时器的值(如果存在这样的计时器)
BOOL QueryPerformanceCounter(LARGE_INTEGER *ipPerformanceCount);//参数指向计数器的值
参数LARGE_INTEGER *ipProformanceCount
为一个指针变量用于函数传值,即指向现时计数器的值.如果安装的硬件不支持高精度计时器,该参数将返回0,
关于返回值:
如果安装的硬件支持高精度计时器,函数将返回非0值.
如果安装的硬件不支持高精度计时器,函数将返回0.
)
为使用方便,再定义一个方便的宏,供使用:
    #define PRINT_COST_TIME CFuncTimeTestter timeTester("TimeTest", __FUNCTION__);

函数执行完毕,会答应当前函数名,并输出其执行时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值