刷新频率 | 平均单次耗时 |
|---|---|
120Hz | 8.33ms |
90Hz | 11.11ms |
60Hz | 16.67ms |
Trace点 | 含义 |
|---|---|
flutter::VsyncProcessCallback | 接收处理Vsync信号。 |
flutter::PlatformConfiguration::begin_frame_ | 进行flutter的“beginFrame”、“Microtasks”的任务。 |
flutter::PlatformConfiguration::draw_frame_ | 进行flutter的“drawFrame”的任务。 |
Trace点 | 含义 |
|---|---|
flutter::GPURasterizer::Draw | 消费pipeline的任务。 |
flutter::Rasterizer::DrawToSurface | 真正的“消费pipeline的任务”。 |
flutter::CompositorContext::ScopedFrame::Raster | 进行flutter的“绘制操作”,包括“Preroll”和“Paint”任务。 |
flutter::LayerTree::Preroll | 遍历所有子图层,执行具体图层的Preroll()方法,并设置绘制范围。 |
flutter::LayerTree::Paint | 遍历所有子图层,执行图层的绘制操作。 |
flutter::SurfaceFrame::Submit | 提交绘制的内容,包括“Flush”和“SwapBuffers”任务。 |
flutter::SkCanvas::Flush | 清空GPU的渲染缓冲区并将命令提交给GPU执行的操作。 |
flutter::OhosContextGL::SwapBuffers | 缓存交换操作。 |
对于单帧的raster线程耗时情况,可以看到flutter::LayerTree::PaintTrace点耗时8.5ms占比75%,这部分是在遍历所有子图层,执行图层的绘制操作。结合实际页面,折线图大量数据展示的组件多层嵌套且跟随坐标变化而更新,因此Paint过程耗时也是由于页面结构、业务逻辑复杂导致。
