Electron官方文档(v1.6.1)中文翻译

4. contentTracing

2017-03-17  本文已影响19人  Shmily落墨

原文:https://github.com/electron/electron/blob/master/docs/api/content-tracing.md
译者:Lin

从Chromium的内容模块中收集跟踪数据来查找性能瓶颈并放缓操作。

进程:主进程

这个模块不包含一个网页界面,所以你需要在一个Chrome浏览器中打开chrome://tracing/并且加载生成的文件来展示结果。

注意:你不能在app模块分发ready事件之前使用这个模块。

const {app, contentTracing} = require('electron')

app.on('ready', () => {
    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模块有以下方法:

contentTracing.getCategories(callback)

得到一组category groups。category groups改变为新的编码路径被延伸/送达。

一旦所有的子进程都报告已经收到getCategories请求,callback将被使用一个category groups数组调用。

contentTracing.startRecording(options, callback)

开始记录所有进程。

当子进程收到EnableRecording请求的时候立刻在本地开始记录。一旦所有进程都收到startRecording请求,callback将会被调用。

categoryFilter是一个过滤器来控制跟踪哪一个category groups。一个过滤器可以有一个可选的包含了一个匹配category的-前缀来排除category groups。不支持在同一个列表中同事包含和排除category patterns。

例如:

traceOptions控制什么样的跟踪是有效的,它是一个使用逗号分隔的列表。可能的可选值有:

前三个可选值是跟踪记录模式,因此它们三个之间是不可同时使用的。如果有一个以上的踪记录模式出现在traceOptions字段中,最后一个将被优先使用。如果没有指定跟踪记录模式,则记录模式默认是record-until-full

跟踪选项将在分析traceOptions并被应用之前首先被重置为默认选项(record_mode设置为record-until-fullenable_samplingenable_systrace设置为false)。

contentTracing.stopRecording(resultFilePath, callback)

停止记录所有进程。

子进程通常会缓存跟踪数据并且很少刷新和发送跟踪数据回主进程。这有助于最小化跟踪时的运行时,因为使用进程间通讯(IPC)发送一个跟踪数据是一个开销非常大的操作。所以为了结束跟踪,我们需要异步告诉紫禁城来刷新和等待跟踪数据。

一旦所有进程都收到stopRecording请求,callback将会被使用一个包含了跟踪数据的文件调用。

跟踪数据不为空或者在一个临时文件中,则跟踪数据将会被写入到resultFilePath中。如果真实的文件路径不是null,那么将通过callback被返回。

contentTracing.startMonitoring(options, callback)

开始监测所有进程。

当子进程收到startMonitoring请求的时候立刻在本地开始监测。

一旦所有子进程都收到startMonitoring请求,callback将会被调用。

contentTracing.stopMonitoring(callback)

停止监测所有进程。

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

contentTracing.captureMonitoringSnapshot(resultFilePath, callback)

获得当前监测追踪数据。

子进程通常会缓存跟踪数据并且很少刷新和发送跟踪数据回主进程。这是因为跟通过进程间通讯(IPC)发送踪数据可能是一个开销非常大的操作,我们要避免跟踪不必要的运行时开销。所以为了结束跟踪,我们需要异步告诉紫禁城来刷新和等待跟踪数据。

一旦所有进程都收到stopRecording请求,callback将会被使用一个包含了跟踪数据的文件调用。

contentTracing.getTraceBufferUsage(callback)

通过跟踪缓冲区进程来获得最大使用百分比的状态。当TraceBufferUsage的值被确定时callback会被调用。

上一篇下一篇

猜你喜欢

热点阅读