渲染过程报告
性能分析库测量应用程序中各个屏幕的渲染时间。每次渲染一个已配置的屏幕时,该库都会将其输出作为 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 | 布尔值 | 总是 | 指示给定的渲染过程是否导致屏幕可交互。通过 PerformanceMeasureView 的 interactive prop 控制。对于中止的渲染过程始终为 false。 |