microprofile是一个嵌入式的跨平台的网络分析器。
要集成进代码中需要如下代码:
#include "microprofile.h"
{
MICROPROFILE_SCOPEI("group","timername", MP_YELLOW);
... code to be timed
}
且每刷一帧都要调用以下函数:
MicroProfileFlip(nullptr);
在microprofile.cpp中实现microprofile,且它必须包含在工程代码中。nullpointer是传给gpu定时器的void*类型的设备上下文。
microprofile可以不调用MicroProfileFlip来使用,在这种情况下应该调用MicroProfileDumpFileImmediately函数以.html或.csv文件格式来保存分析数据。
Gpu时序:
GPU定时器工作方式除了都放在一个共享组之外,其他方面类似普通定时器。使用宏MICROPROFILE_SCOPEGPUI()来插入。GPU定时器还支持多线程渲染,可适用于以下api:
1.Opengl
2.D3D11
3.D3D12
4.Vulkan
计数器:
MicroProfile支持追踪不同的计数器,会在在线抓取视图中显示出来。如下所示:
MICROPROFILE_COUNTER_ADD("memory/main", 1000);
MICROPROFILE_COUNTER_SET("fisk/geder/", 42);
时间线:
时间线视图是用来标记更长,更唯一的定时器。它可显示类似一个附带有层次名的层次加载视图:
1.显示一段持续很长时间的状态,比单一帧时长更长
2.不会出现在聚合中
3.总是激活的状态且被认为是唯一的
4.有客制化的字符串
有2中方式表示,第一种是以非格式化静态字符串常量形式:
MICROPROFILE_TIMELINE_ENTER_STATIC(MP_DARKGOLDENROD, "one");
MICROPROFILE_TIMELINE_LEAVE_STATIC("one");
MICROPROFILE_TIMELINE_TOKEN(token);
MICROPROFILE_TIMELINE_ENTERF(token, MP_YELLOW, "custom %d %6.2f", 10, 42.0f);
MICROPROFILE_TIMELINE_LEAVE(token);
详细参考地址