Electron中文手册
  • 文档概述
  • 开发指南目录
  • 构建说明(Linux)
  • 构建说明(macOS)
  • 构建说明(Windows)
  • 构建系统概述
  • 编码规范
  • 在 macOS 中调试
  • 在 Windows 中调试
  • 在C ++代码中使用clang-format
  • 在调试器中设置符号服务器
  • 源代码目录结构
  • Chrome升级清单
  • Chromium 开发指南
  • V8 开发指南
  • 教程目录
    • 关于 Electron
    • Electron 版本说明
    • API弃用说明
    • 快速入门
    • 支持的平台
    • 桌面环境集成
    • 系统通知
    • 离屏渲染
    • 在线/离线事件检测
    • 多线程
    • REPL
    • 键盘快捷键
    • DevTools扩展
    • 使用原生模块
    • 使用 Pepper Flash 插件
    • 使用 Selenium 和 WebDriver
    • 使用 Widevine CDM 插件
    • 应用分发
    • 应用打包
    • 主进程调试
    • 使用 node-inspector 进行主进程调试
    • 使用 VSCode 进行主进程调试
    • Mac App Store应用提交指南
    • Windows App Store应用提交指南
    • 安全,本地功能和你的责任
    • Headless CI Systems 测试
  • API接口目录
    • API接口之公用接口
      • 应用语言
      • 开发概要
      • 专业术语
      • 常见问题
      • 环境变量
      • 快捷键字符串
      • 命令行
      • 客户端请求
      • 剪贴板
      • <File> H5 File文件操作
      • 无框窗口
      • <window.open> window.open打开新窗口或打开时传递消息
      • 沙盒选项
    • API接口之主进程接口
      • 整体控制
      • 全局快捷键
      • 图标创建与应用
      • 屏幕
      • 窗口
      • 菜单
      • 菜单项
      • 系统托盘
      • 网页内容
      • 从主进程到渲染进程的异步通信
      • 对话框
      • 创建和控制视图
      • 会话
      • 会话,缓存和代理等控制
      • 页面请求
      • HTTP/HTTPS请求处理
      • 协议的注册和处理
      • 使用系统默认应用程序管理文件或URL
      • 下载项管理
      • 进程控制
      • Chromium原生网络库
      • 获取系统首选项
      • 电源状态
      • 节能管理
      • 调试工具
      • 奔溃报告
      • 性能数据收集
      • 自动更新
      • TouchBar触摸条
      • TouchBar触摸条按钮
      • TouchBar触摸条拾色器
      • TouchBar触摸条分组
      • TouchBar触摸条scrubber
      • TouchBar触摸条分段控件
      • TouchBar触摸条label标签
      • TouchBar触摸条弹出框
      • TouchBar触摸条滑块
      • TouchBar触摸条间隔符
    • API接口之渲染进程接口
      • 页面渲染
      • <webview> webview标签
      • 渲染进程与主进程通信
      • 从渲染进程到主进程的异步通信
      • 子窗口
      • 捕获桌面资源
  • 结构列表
    • 蓝牙设备对象
    • 证书对象
    • 证书主体对象
    • Cookie对象
    • 崩溃报告对象
    • 桌面捕获源对象
    • 显示器对象
    • 打印机信息对象
    • 文件过滤器对象
    • 最近使用的项目
    • 常用列表项
    • CPU使用率对象即程序占用的CPU资源
    • IO值对象
    • 内存信息对象
    • 进程内存信息对象
    • 内存使用详细信息
    • Mime类型缓冲区
    • 矩形对象
    • 删除客户端证书对象
    • 删除密码对象
    • Scrubber项对象
    • 分段控制对象
    • 快捷方式对象
    • 任务对象
    • 缩略图工具栏按钮对象
    • 上传blob对象
    • 上传数据对象
    • 上传文件系统对象
    • 上传文件对象
    • 上传原始数据对象
Powered by GitBook
On this page
  • 方法
  • contentTracing.getCategories(callback)
  • contentTracing.startRecording(options, callback)
  • contentTracing.stopRecording(resultFilePath, callback)
  • contentTracing.startMonitoring(options, callback)
  • contentTracing.stopMonitoring(callback)
  • contentTracing.captureMonitoringSnapshot(resultFilePath, callback)
  • contentTracing.getTraceBufferUsage(callback)

Was this helpful?

  1. API接口目录
  2. API接口之主进程接口

性能数据收集

Previous奔溃报告Next自动更新

Last updated 4 years ago

Was this helpful?

从Chromium的内容模块收集跟踪数据,以发现性能瓶颈和缓慢的操作

进程:

这个模块不具备web接口,需要我们在chrome浏览器中添加 chrome://tracing/ 来加载生成结果文件.

注意该模块应当在 ready事件之后使用.

const {contentTracing} = require('electron')
const options = {
  categoryFilter: '*',
  traceOptions: 'record-until-full,enable-sampling'
}
contentTracing.startRecording(options, () => {
  console.log('Tracing started')

  setTimeout(() => {
    contentTracing.stopRecording('', (path) => {
      console.log('Tracing data recorded to ' + path)
    })
  }, 5000)
})

方法

contentTracing.getCategories(callback)

用途:获取一组类别组,而且类别组可以随着到达新的代码路径而改变

  • callback Function

    • categories String[]

一旦所有的子进程都接受到了 getCategories方法请求, 则调用 callback返回类别组.

contentTracing.startRecording(options, callback)

用途:在所有进程上开始记录

  • options Object

    • categoryFilter String

    • traceOptions String

  • callback Function

一旦子进程接收到 EnableRecording请求,将立即以异步开始记录。

一旦所有子进程都确认了 startRecording请求, callback将被调用。

categoryFilter是一个过滤器,用于控制应跟踪哪些类别组。

过滤器可以具有可选的 -前缀,以排除包含匹配类别的类别组。不支持在同一列表中包括和排除类别模式。

比如:

  • test_MyTest*,

  • test_MyTest*,test_OtherStuff,

  • "-excluded_category1,-excluded_category2

traceOptions 控制着哪种跟踪应该被启动,这是一个用逗号分隔的列表.可用参数如下:

  • record-until-full

  • record-continuously

  • trace-to-console

  • enable-sampling

  • enable-systrace

前3个参数是来跟踪记录模块,并且是互斥关系.

如果在 traceOptions 中超过一个跟踪记录模式,那最后一个的优先级最高.

如果没有指明跟踪记录模式,那么它默认为 record-until-full.

在 traceOptions 中的参数被解析应用之前,跟踪参数会被初始化为默认参数 ( record_mode 设置为 record-until-full, enable_sampling 和 enable_systrace 设置为 false).

contentTracing.stopRecording(resultFilePath, callback)

用途:停止对所有子进程的记录

  • resultFilePath String

  • callback Function

    • resultFilePath String

子进程通常缓存跟踪数据,并且仅仅将数据截取和发送给主进程.

这有利于在通过 IPC 发送跟踪数据之前减小跟踪时的运行开销,这样做很有价值.

因此,发送跟踪数据,我们应当异步通知所有子进程来截取任何待跟踪的数据.

一旦所有子进程接收到了 stopRecording 请求,将调用 callback ,并且返回一个包含跟踪数据的文件.

如果 resultFilePath 不为空,那么将把跟踪数据写入其中,否则写入一个临时文件.实际文件路径如果不为空,则将调用 callback .

contentTracing.startMonitoring(options, callback)

用途:开始监视所有进程

  • options Object

    • categoryFilter String

    • traceOptions String

  • callback Function

一旦子进程接收到 startMonitoring请求,将立即以异步开始监听。

一旦所有子进程都确认了 startRecording请求, callback将被调用。

contentTracing.stopMonitoring(callback)

用途:停止对所有子进程的监听

  • callback Function

一旦所有子进程接收到了 stopMonitoring 请求, callback将被调用。

contentTracing.captureMonitoringSnapshot(resultFilePath, callback)

用途:获取当前监听的跟踪数据

  • resultFilePath String

  • callback Function

    • resultFilePath String

子进程通常缓存跟踪数据,并且仅仅将数据截取和发送给主进程.

因为如果直接通过 IPC 来发送跟踪数据的代价昂贵,我们应当避免不必要的跟踪运行开销.

因此,为了停止跟踪,我们可以通过异步通知所有子进程来刷新任何挂起的跟踪数据。

一旦所有子进程接收到了 captureMonitoringSnapshot 请求,将调用 callback ,并且返回一个包含跟踪数据的文件.

contentTracing.getTraceBufferUsage(callback)

用途:获取当前监听的跟踪数据

  • callback Function

    • value Number

    • percentage Number

获取跟踪缓冲区进程的最大使用量与完整状态的百分比。当TraceBufferUsage值被确定时,就调用 callback .

主进程