首页
登录 | 注册

C++性能查看-宏定义输出

之前由于想统计代码中每个模块加载时长,因此写了一个模块加载时长统计类,使用起来也是超级方便,只需要定义一个宏即可

使用方式如下:

1、统计函数性能

void func()
{
    CONSUMING_OUTPUT("className");
}

2、统计函数中某个模块加载时长

void func()
{
    ...
    {
        //funcation code
        CONSUMING_OUTPUT("code");
    }
    ...
}

3、统计类的存活时长

class A()
{
    ...
    
    CONSUMING_OUTPUT("A life time");
}

//性能查看方便类代码如下

#include <time.h>
#include <windows.h>
#include <iostream>

struct PerformanceCheck
{
public:
    PerformanceCheck(const std::wstring & message) :m_Message(message)
    {
        m_Start = clock();
    }
    ~PerformanceCheck()
    {
        m_End = clock();

        wchar_t str[1024];

        wsprintf(str, L"%s:%d\n", m_Message.c_str(), (long)((double)(m_End - m_Start) / (double)(CLOCKS_PER_SEC)* 1000.0));

#ifdef _DEBUG
        OutputDebugString(str);
#else
        RLBase::WriteProgramLogNoMask(str);
#endif // DEBUG
    }

private:
    clock_t m_Start;
    clock_t m_End;
    std::wstring m_Message;
};

#define PerformanceOutput  //是否启用性能输出

#ifdef PerformanceOutput
#define  CONSUMING_OUTPUT(a) PerformanceCheck c(a)
#else
#define  CONSUMING_OUTPUT(a)
#endif

相关文章

  • 页面性能优化-原生JS实现图片懒加载
         在项目开发中,我们往往会遇到一个页面需要加载很多图片的情况.我们可以一次性加载全部的图片,但是考虑到用户有可能只浏览部分图片.所以我们需要对图片加载进行优化,只加载浏览器窗口内的图片,当用户滚动时,再加载更多的图片.这种加载图片的 ...
  • 为什么说 Java 程序员到了必须掌握 Spring Boot 的时候?
    Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,就单从我个人的博客的访问量大幅增加就可以感受到大家对学习 Spring Boot 的热情,那么在这么多人热衷于学习 Spring Boot 之时,我自己也在 ...
  • MongoDB【快速入门】
    1.MongDB 简介 MongoDB(来自于英文单词"Humongous",中文含义为"庞大")是可以应用于各种规模的企业.各个行业以及各类应用程序的开源数据库.作为一个适用于敏捷开发的数据库,Mo ...
  • Containerd 简介
    我们可以把 docker 抽象为下图所示的结构(此图来自互联网): 从图中可以看出,docker 对容器的管理和操作基本都是通过 containerd 完成的. 那么,containerd 是什么呢?Containerd 是一个工业级标准的 ...
  • 学了很多乱七杂八的东西,但是依然停留在前端,在工作中一直和后端交流,但是不太了解数据库是怎么回事,为了加强学习,准备学习一些关于数据库相关的东西. 说起数据库可能会有很多很多,SQLServer.Oracle.Sybase等等等,还有就是要 ...
  • Windbg分析高内存占用问题
    1. 问题简介 最近产品发布大版本补丁更新,一商超客户升级后,反馈系统经常奔溃,导致超市的收银系统无法正常收银,现场排队付款的顾客更是抱怨声声.为了缓解现场的情况, 客户都是手动回收IIS应用程序池才能解决. 这样的后果是很严重的,接到反馈 ...

2019 cecdns.com webmaster#cecdns.com
12 q. 0.054 s.
京ICP备10005923号