当前位置: 首页 > article >正文

minitrace使用

minitrace使用

文章目录

    • minitrace使用
      • 简介
      • 获取
      • 用法
      • 结果查看
      • 例程解析

简介

minitrace 是一个轻量级的跟踪库,用于创建和记录程序的运行时跟踪,以便进行性能分析。 在C++程序中插入性能监控点,通过记录函数或任务的开始和结束时间,生成trace.json文件。 minitrace生成的trace.json文件可以通过ChromeTrace Viewer(内置于Chrome浏览器中的工具)进行可视化。

获取

  • github上面的是基于C语言实现的,地址为:https://github.com/hrydgard/minitrace.git
  • 可以在行为树的仓库中找到c++版本的,地址:https://github.com/BehaviorTree/BehaviorTree.CPP.git
    • 3rdparty/minitrace

用法

  • 参照README.md

结果查看

  • 打开Chrome浏览器,并输入chrome://tracing进入Trace Viewer界面
  • 加载(load)trace.json文件
  • 查看和分析数据:加载成功后,可以在界面看到各线程的运行时间等性能数据

例程解析

#include <unistd.h>
#include <iostream>
#include "minitrace/minitrace.h"

using namespace minitrace;

int main(int argc, const char *argv[]) 
{
  int i;
  // 初始化 minitrace 库,并指定输出跟踪数据的文件路径
  mtr_init("trace.json");

  // 设置进程和线程的名称,这些信息会在跟踪数据中显示
  MTR_META_PROCESS_NAME("minitrace_test");
  MTR_META_THREAD_NAME("main thread");

  int long_running_thing_1;
  int long_running_thing_2;

  // 定义两个整数变量,用于跟踪两个长时间运行的任务。MTR_START 宏用于标记任务的开始
  MTR_START("background", "long_running", &long_running_thing_1);
  MTR_START("background", "long_running", &long_running_thing_2);

  // 使用 MTR_BEGIN 宏开始跟踪名为 "outer" 的事件,并使程序暂停 80 毫秒
  MTR_BEGIN("main", "outer");
  usleep(80000);
   
  // 循环三次,每次开始一个名为 "inner" 的事件,暂停 40 毫秒,然后结束该事件,再暂停 10 毫秒
  for (i = 0; i < 3; i++) {
    MTR_BEGIN("main", "inner");
    usleep(40000);
    MTR_END("main", "inner");
    usleep(10000);
  }
    
  // 记录第一个后台任务的中间步骤,并再次暂停 80 毫秒
  MTR_STEP("background", "long_running", &long_running_thing_1, "middle step");
  usleep(80000);
    
  // 结束 "outer" 事件的跟踪
  MTR_END("main", "outer");

  usleep(50000);
    
  // 记录一个名为 "the end" 的即时事件
  MTR_INSTANT("main", "the end");
  usleep(10000);
    
  // 结束两个后台任务的跟踪
  MTR_FINISH("background", "long_running", &long_running_thing_1);
  MTR_FINISH("background", "long_running", &long_running_thing_2);

  // 刷新跟踪数据到文件,并关闭 minitrace 库
  mtr_flush();
  mtr_shutdown();
  return 0;
}

在这里插入图片描述


http://www.kler.cn/news/317102.html

相关文章:

  • 只装了WPS,DOC文档无法打开
  • c语言面试字符串复制
  • PHP邮箱系统:从入门到实战搭建教程指南!
  • 12. Scenario Analysis for greedy algorithm
  • java中使用BP网络进行回归
  • 【ComfyUI】控制光照节点——ComfyUI-IC-Light-Native
  • 爵士编曲:爵士鼓编写 爵士鼓笔记 底鼓和军鼓 闭镲和开镲 嗵鼓
  • 9.23作业
  • 无人机之激光避障篇
  • 3.4 爬虫实战-爬去智联招聘职位信息
  • 什么是反射,反射用途,spring哪些地方用到了反射,我们项目中哪些地方用到了反射
  • 【python】requests 库 源码解读、参数解读
  • Maven笔记(一):基础使用【记录】
  • Spring Boot 中的拦截器 Interceptors
  • 【已解决】用JAVA代码实现递归算法-从自然数中取3个数进行组合之递归算法-用递归算法找出 n(n>=3) 个自然数中取 3 个数的组合。
  • 在云渲染中3D工程文件安全性怎么样?
  • 【HarmonyOS】深入理解@Observed装饰器和@ObjectLink装饰器:嵌套类对象属性变化
  • Unity-Screen屏幕相关
  • 【设计模式】万字详解:深入掌握五大基础行为模式
  • 鸿蒙 OS 开发零基础快速入门教程
  • ER论文阅读-Incomplete Multimodality-Diffused Emotion Recognition
  • 【LLM学习之路】9月22日 第九天 自然语言处理
  • 计算一个矩阵的逆矩阵的方法
  • 2024ICPC网络赛第一场C. Permutation Counting 4(线性代数)
  • nginx的反向代理和负载均衡
  • 16.3 k8s容器cpu内存告警指标与资源request和limit
  • 【数据结构-栈】力扣682. 棒球比赛
  • 0-1开发自己的obsidian plugin DAY 1
  • 鸿蒙操作系统(HarmonyOS)生态与机遇
  • YOLOv10改进,YOLOv10替换主干网络为PP-HGNetV1(百度飞桨视觉团队自研,全网首发,助力涨点)