承接上一篇《火焰图与性能取证:Perfetto 实战》讲完的取证工具,这一篇深入渲染管线内部。渲染问题的排查与其他性能问题不同:它的瓶颈可能不在 CPU 也不在 GPU,而在"两者之间的带宽"上。而且硬件加速并非免费的——它把绘制指令从主线程搬到了 GPU 与 RenderThread,中间引入了新的开销与失败模式。结论先行:渲染优化的第一原则是"先判断瓶颈在哪一层"——CPU(UI 线程计算)、GPU(像素填充率)、还是带宽(纹理与图层搬运)。用错手段的优化往往无效,甚至更慢。硬件加速做了什么默认从 Android 3.0(API 11)起,窗口的绘制走硬件加速。核心变化是绘制指令的记录与执行分离:【软件绘制】 【硬件加速】 UI 线程 UI 线程 ├ measure ├ measure ├ layout ├ layout └ draw ──────────► └ draw(只记录指令到 DisplayList) │ └► RenderThread 遍历 DisplayList └► 录制 GPU 指令 → GPU 执行这带来三个直接后果:1.UI
阅读完成 · 觉得有帮助?