跳到主要内容

渲染过程报告

性能分析库测量应用程序中各个屏幕的渲染时间。每次渲染一个已配置的屏幕时,该库都会将其输出作为 RenderPassReport 对象发出。你需要向 PerformanceProfiler 组件提供一个 onReportPrepared 回调来接收这些报告,并根据你的需要进行处理。你可以 console.log 这些报告,在某些 UI 开发工具中显示它们,或者将它们发送到遥测服务 - 在报告中了解更多信息。

每次渲染已配置的屏幕时,都会调用此回调。一个屏幕可能会被渲染多次。该库希望你为这些离散的渲染过程分配唯一的名称。每个这样的渲染过程都会生成一个 RenderPassReport

请注意,对于你通过该库配置的应用程序中的每个屏幕,都会调用此回调。这是因为我们希望在你的应用程序中以一致的方式处理所有报告。但是,如果你需要订阅给定屏幕的报告,请参阅 useRenderPassReport 钩子,它允许你按屏幕名称正则表达式过滤报告。

RenderPassReport 结构

该库为每个完成的渲染过程发出一个 JSON 报告。这是一个示例

json
{
"reportId": "3edb5bb5-8799-4322-899d-f5b6faf5dade",
"flowInstanceId": "bc738def-da39-4b7e-8965-c97110c12336",
"sourceScreen": "PackageExamples",
"destinationScreen": "SomeScreen",
"flowStartTimeSinceEpochMillis": 1611603113725.3179,
"timeToConsumeTouchEventMillis": 2.682223916053772,
"renderPassName": "interactive",
"timeToRenderMillis": 5085.299072265625,
"interactive": true
}
json
{
"reportId": "3edb5bb5-8799-4322-899d-f5b6faf5dade",
"flowInstanceId": "bc738def-da39-4b7e-8965-c97110c12336",
"sourceScreen": "PackageExamples",
"destinationScreen": "SomeScreen",
"flowStartTimeSinceEpochMillis": 1611603113725.3179,
"timeToConsumeTouchEventMillis": 2.682223916053772,
"renderPassName": "interactive",
"timeToRenderMillis": 5085.299072265625,
"interactive": true
}

此 JSON 包含以下属性

属性类型可用性描述
reportId字符串总是一个 UUID,用于唯一标识每次渲染的报告。如果从库中多次发出相同的报告(例如,通过多次使用 useRenderPassReport 钩子),所有这些报告将共享相同的唯一 reportId
flowInstanceId字符串总是一个 UUID,用于唯一标识一个流程的实例。来自单个流程运行的所有渲染过程报告将共享相同的唯一 flowInstanceId
sourceScreen字符串可选已配置流程的源屏幕。在配置导航渲染时间时可以选择性提供。
destinationScreen字符串总是已配置的目标屏幕。
flowStartTimeSinceEpochMillis数字总是流程启动时的时间戳。
timeToConsumeTouchEventMillis数字可选该库可以计算原生触摸事件被 JS Touchable::onPress 回调消耗所花费的时间。如果你传递 onPress 回调的第一个参数给该库,它就可以做到这一点。
timeToBootJsMillis数字可选启动 JS 代码所花费的时间。仅在测量应用程序启动渲染时间时可用。
renderPassName字符串可选已完成的渲染过程的名称。对于中止的渲染过程不可用。
timeToRenderMillis数字可选完成渲染过程所花费的时间。对于中止的渲染过程不可用。
timeToAbortMillis数字可选中止渲染过程所花费的时间。仅对中止的渲染过程可用。
interactive布尔值总是指示给定的渲染过程是否导致屏幕可交互。通过 PerformanceMeasureViewinteractive prop 控制。对于中止的渲染过程始终为 false。