首页 > 其他分享 >minitrace使用

minitrace使用

时间:2024-09-26 15:19:57浏览次数:3  
标签:MTR long thing running 使用 main 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;
}

在这里插入图片描述

标签:MTR,long,thing,running,使用,main,minitrace
From: https://blog.csdn.net/qq_29935433/article/details/142459027

相关文章

  • beef-xss 安装使用
    beef-xss安装参考:https://cloud.tencent.com/developer/article/2196746apt-getinstallbeef-xss启动beef-xssbeef-xss关闭beef-xssbeef-xss-stop钓鱼精华就在于把下面这句js代码插入前端文件中(要在实战环境中利用需要端口转发)<scriptsrc="http://ip:3000/hook......
  • MyBatis-Plus的使用基础入门案例
    目录文章目录目录简介特性框架结构第一个案例准备工作初始化工程添加依赖完整的pom配置编写实体类编写Mapper修改启动类--扫描Mapper测试运行简介MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生......
  • Abp 使用app.UseStaticFiles配置静态文件中间件以达到创建虚拟路径
    若访问项目文件wwwroot以外的其他静态文件使用如下方式访问1.配置文件中配置路径(appsetting)"App":{"ServerRootAddress":"https://localhost:44301/","ClientRootAddress":"https://localhost:4200/","CorsOrigins":"......
  • 18 vue3之自动引入ref插件&深入使用v-model
    自动引入插件后无需再引入ref等使用自动引入插入无需在import{ref,reactive}from"vue"做这样的操作npmi unplugin-auto-import-D vite配置importAutoImportfrom'unplugin-auto-import/vite'//使用vite版本exportdefaultdefineConfig({ plugins:[vu......
  • Linux系统之温度监控工具——lm_sensors的安装和基本使用
    Linux系统之温度监控工具——lm_sensors的安装和基本使用一、lm_sensors介绍lm_sensors,是一款基于linux系统的硬件监控的软件。可以监控主板,CPU的工作电压,温度等数据。rpm包下载地址获取码2344:lm_sensors-3.4.0-6.20160601gitf9185e5.el7.x86_64.rpm二、检测安装环境1.检查......
  • VUE2 使用 el-upload 实现单文件上传、删除、预览(上传后隐藏上传图片按钮)
    实现后效果展示:上传前:上传后:注意点:on-change事件不要与on-success事件同时使用Demo:<template><div><el-uploadlist-type="picture-card"accept="image/*":file-list="fileList":action="uploadIma......
  • JavaScript对象方法使用指南:成为对象操作达人
    ......
  • Mimikatz的使用及免杀方向(过360,火狐和WindowsDefinder)
    一.Mimikatz加修改注册表绕过LSA保护(暂不考虑EDR和WD)Mimikatz原理:Mimikatz通过逆向获取存储在lsass.exe进程中的明文登录密码。(lsass.exe用于本地安全和登陆策略)。首先使用Mimikatz抓取时必须是管理员权限,在win10,win11,win2012等版本中,系统会开启LSA保护,明文密码字段会显示nul......
  • 数据库设计原则:应该使用软删除吗?
    在数据库设计中,当删除一条记录的时候,是加一个标记位还是直接删除这一行?物理删除:真删除,数据消失。逻辑删除:假删除,数据存在,只是用一个字段来标记该条数据“已删除”。参考了一些网络上的讨论如下:关于softdelete的好处,justjavac的介绍很棒。不过是否应该使用softdelete,还是需要慎......
  • 【java笔记】 5 接口使用举例
    //导入Swing库中的消息对话框组件importjavax.swing.*;//定义一个Circle类,该类实现了ShapeInterface接口publicclassCircleimplementsShapeInterface{//定义一个私有变量radius来保存圆的半径privatedoubleradius;//默认构造函数,初始化一个半径为0的圆p......