编程进阶网 编程进阶网
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++开发技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript高级
  • Android库解读
  • Android专栏
  • Android智能硬件
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Linux实践开发
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接

杨充

专注编程 · 终身学习者
首页
  • 计算机原理
  • 操作系统
  • 网络协议
  • 数据库原理
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 性能优化
  • 编程原理
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 基础认知
  • 线性结构
  • 树与哈希
  • 工业级实现
  • 算法思想
  • 实战与综合
  • 算法题考核
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++开发技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript高级
  • Android库解读
  • Android专栏
  • Android智能硬件
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Linux实践开发
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接
  • README
  • 性能优化实践

    • README
      • 目录介绍
      • 一、专栏世界观
        • 1.1 解决什么问题
        • 1.2 跨平台抽象
        • 1.3 科学求证范式
        • 1.4 与「普通性能教程」的区别
      • 二、分卷设计原则
        • 2.1 分卷的三个维度
        • 2.2 卷与卷的衔接关系
        • 2.3 卷内文章统一骨架(科学求证 11 章模板)
      • 三、整体架构(六卷一体)
        • 文件结构
      • 四、问题速查矩阵
        • 4.1 按现象反查
        • 4.2 按角色反查
        • 4.3 按工具反查
      • 五、目录与阅读路径
        • 0️⃣ 卷零 公共方法论(专栏宪法,必读)
        • 1️⃣ 卷一 体系建设篇(可观测性与稳定性)
        • 2️⃣ 卷二 资源专项篇(CPU / 内存 / 线程 / 进程 / IO)
        • 3️⃣ 卷三 流水线专项(渲染 / FPS / 卡顿 / ANR / UI / 动画)
        • 4️⃣ 卷四 业务专项篇(启动 / 网络 / 图片 / 列表 / 功耗)
        • 5️⃣ 卷五 交付防御篇(崩溃 / 包体 / 安全 / 弱网)
      • 六、推荐阅读路径(按角色)
        • 🟢 跨端开发者(推荐画像)
        • 🟡 单平台开发者
        • 🔴 性能架构师
        • 🟣 嵌入式开发者
      • 七、写作约定
        • 7.1 表达规范
        • 7.2 数据规范
        • 7.3 图示规范
      • 八、跨平台统一术语
      • 九、专栏建设路线
        • P1 立柱阶段 ✅ 已完成
        • P2 标杆重构 ✅ 已完成
        • P3 批量重构 ✅ 已完成
        • P4 联动打磨 🟡 进行中
      • 十、专栏现状与质量基线
        • 10.1 完成度
        • 10.2 质量基线
      • 十一、一句话总结
    • 公共方法论

    • 体系建设篇

    • 资源专项篇

    • 流水线专项

    • 业务专项篇

    • 交付防御篇

  • 程序编程原理

  • 稳定性与可靠性

  • 工程化与运维

  • 方案设计思想

  • 专栏
  • 性能优化实践
杨充
2026-05-27
目录

README

# 性能优化实践

一份跨平台、有技术深度、带科学求证的性能工程指南。 用统一的性能模型解释 Android / iOS / Web / 嵌入式 / 桌面的所有性能问题; 用「假设 → 度量 → 归因 → 验证 → 固化」的求证闭环替代经验主义。


# 目录介绍

  • 一、专栏世界观
  • 二、分卷设计原则
  • 三、整体架构(六卷一体)
  • 四、问题速查矩阵
  • 五、目录与阅读路径
  • 六、推荐阅读路径(按角色)
  • 七、写作约定
  • 八、跨平台统一术语
  • 九、专栏建设路线
  • 十、专栏现状与质量基线
  • 十一、一句话总结

# 一、专栏世界观

# 1.1 解决什么问题

性能优化领域的常见痛点:

  • 平台割裂:Android / iOS / Web / 嵌入式各讲各的,原理相同的问题被讲成「四套知识」。
  • 经验主义:充斥「建议这样做」「通常那样会快」,缺乏可证伪的求证。
  • 碎片化:今天讲 GC、明天讲火焰图,缺少统一方法论坐标系。
  • 不持久:辛苦优化一轮,三个版本被业务功能堆回去。

本专栏目标:用一套方法论 + 一套指标语言 + 一套分卷体系,把上述痛点系统性解决。

# 1.2 跨平台抽象

核心命题:性能问题的「原理」是跨平台同构的,「实现」才是平台特异的。

原理(跨平台共性):    资源 × 时间 × 流水线
                          │
                          ▼
实现(平台特异):   ART / V8 / OC Runtime / RTOS
1
2
3
4

学懂任意一端的原理,迁移到其他端只需要换 API 名称。所有文章都遵循「先讲跨平台原理,再讲平台特化」的结构。

# 1.3 科学求证范式

每篇文章必须满足:

  • 所有结论可证伪(带前置条件、设备、数据集)。
  • 所有数字有出处(带样本量、置信区间、P50/P95/P99)。
  • 所有建议有边界(什么场景成立,什么场景不成立)。
  • 所有案例走完闭环(现象 → 度量 → 归因 → 求证 → 防御)。

# 1.4 与「普通性能教程」的区别

维度 普通教程 本专栏
视角 罗列平台 API 平台无关的第一性原理
论证 直接给结论 观察 → 假设 → 实验 → 数据 → 结论
数据 文字描述 必带基准数据 / 对照实验 / 量化收益
工具 一两个平台工具 抽象成「采集源 + 分析范式」,再映射各平台
案例 单一平台 同一类问题在 Android/iOS/Web/嵌入式 同构 + 异构对比

# 二、分卷设计原则

# 2.1 分卷的三个维度

把内容拆成「卷」,需要在三个正交维度上找到一致切分:

维度 含义 是否作为分卷依据
抽象层级 L1 系统 / L2 运行时 / L3 应用 / L4 体感 ✅ 主维度
问题视角 资源(USE)/ 请求(RED)/ 体感(APDEX) ✅ 辅维度
技术维度 监控 / 优化 / 防御 ❌ 不作为分卷(每篇内部都包含三者)

# 2.2 卷与卷的衔接关系

方法论(卷零) → 体系建设(卷一) → 资源(卷二) → 流水线(卷三) → 业务(卷四) → 交付防御(卷五)
   ↑              ↑                    ↑               ↑                ↑                ↑
   宪法           地基                  L1              L2               L3               L4 边界
1
2
3

关键约定:

  • 卷零是基础设施:定义术语、模型、方法论。其他卷必须引用而非重复。
  • 卷一是工具地基:APM 与稳定性体系,是后续卷内「如何度量」的支撑。
  • 卷二/三/四并列展开:分别从资源、流水线、业务三种视角看性能问题,互相引用。
  • 卷五是边界与收口:崩溃、包体、安全、弱网 —— 性能成果安全交付的边界条件。

# 2.3 卷内文章统一骨架(科学求证 11 章模板)

00.阅读说明 → 01.问题域 → 02.第一性原理 → 03.度量与采集 → 04.归因方法
→ 05.求证实验 ⭐ → 06.优化策略 → 07.实战案例 → 08.防劣化 → 09.跨平台对照 → 10.总结
1
2

# 三、整体架构(六卷一体)

                    ┌─────────────────────────────┐
                    │  卷零:方法论(专栏宪法)    │
                    │  原理 / 指标 / 求证 /       │
                    │  采集 / 归因 / 防劣化       │
                    └─────────────┬───────────────┘
                                  │ 被所有卷引用
                                  ▼
                    ┌─────────────────────────────┐
                    │  卷一:体系建设(地基)     │
                    │  APM / 稳定性 / 数据治理    │
                    └─────────────┬───────────────┘
                                  │ 提供基础设施
        ┌─────────────────────────┼─────────────────────────┐
        ▼                         ▼                         ▼
┌────────────────┐     ┌────────────────┐     ┌────────────────┐
│ 卷二:资源篇   │     │ 卷三:流水线   │     │ 卷四:业务篇   │
│ CPU / 内存 /   │     │ 渲染 / FPS /   │     │ 启动 / 网络 /  │
│ OOM / 线程 /   │     │ 卡顿 / ANR /   │     │ 图片 / 列表 /  │
│ 进程 / IO      │     │ UI / 动画交互  │     │ 功耗           │
└────────┬───────┘     └────────┬───────┘     └────────┬───────┘
         └──────────────────────┼──────────────────────┘
                                │
                                ▼
                    ┌─────────────────────────────┐
                    │ 卷五:交付与防御(边界)     │
                    │ 崩溃 / 包体 / 安全 / 弱网   │
                    └─────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# 文件结构

01.性能优化实践/
├── README.md                                ← 本文(专栏入口)
│
├── 00.公共方法论/                           ← 卷零:宪法
│   ├── 01.性能工程总论原理.md
│   ├── 02.跨平台指标体系.md
│   ├── 03.性能求证方法论.md
│   ├── 04.数据采集与观测.md
│   ├── 05.归因方法与火焰图.md
│   ├── 06.性能预算防劣化.md
│   ├── 07.性能体系全景图.md
│   └── 08.性能优化误区集.md
│
├── 01.体系建设篇/                           ← 卷一:地基
│   ├── 01.应用APM的设计.md
│   ├── 02.稳定性专项建设.md
│   └── 03.性能监控数据治理.md
│
├── 02.资源专项篇/                           ← 卷二:资源 L1
│   ├── 01.CPU监控与分析.md
│   ├── 02.内存监控与治理.md
│   ├── 03.OOM与低内存治理.md
│   ├── 04.线程模型调度优化.md
│   ├── 05.进程与多进程优化.md
│   └── 06.IO与存储性能.md
│
├── 03.流水线专项/                           ← 卷三:流水线 L2
│   ├── 01.渲染管线与原理.md
│   ├── 02.FPS与帧率检测.md
│   ├── 03.卡顿捕获与归因.md
│   ├── 04.ANR监控与治理.md
│   ├── 05.页面UI与布局优化.md
│   └── 06.动画交互响应优化.md
│
├── 04.业务专项篇/                           ← 卷四:业务 L3
│   ├── 01.App冷启动优化.md
│   ├── 02.网络性能分析优化.md
│   ├── 03.图片性能解码优化.md
│   ├── 04.列表与滚动性能.md
│   └── 05.功耗与电量优化.md
│
└── 05.交付防御篇/                           ← 卷五:交付 L4
    ├── 01.崩溃捕获设计实践.md
    ├── 02.包体积与资源治理.md
    ├── 03.应用安全性能权衡.md
    └── 04.弱网极端环境治理.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

# 四、问题速查矩阵

当你遇到问题时,从下表反查;当你学习知识时,看下一章传统目录。

# 4.1 按现象反查

现象 第一线索 主路径 备选路径 误区
主线程 ANR 卡顿是哪种? 卷三·04 ANR 卷二·06 IO(IO 阻塞型) 看 CPU 占用低就以为不是 ANR
启动慢 冷/温/热? 卷四·01 冷启动 卷二·06 IO + 卷四·02 网络 盲目异步反而更慢
内存涨 增长率 vs 总量? 卷二·02 内存 卷二·03 OOM(已触发) 只看 PSS 不看驻留时间
列表卡 bind 还是图片? 卷四·04 列表 卷四·03 图片 加更多 ItemType 反而更卡
耗电高 前/后台? 卷四·05 功耗 卷二·06 IO(后台写) 心跳过频但不自知
帧率不稳 平均还是抖动? 卷三·02 FPS 卷三·01 渲染 看平均 FPS 没问题就放过
弱网卡死 失败还是延迟? 卷五·04 弱网 卷四·02 网络 重试 3 次加剧雪崩
闪退/崩溃 必现还是偶发? 卷五·01 崩溃 卷二·03 OOM OOM 被识别为普通崩溃
滚动掉帧 长列表 or 动画? 卷四·04 列表 卷三·06 动画 用 left/top 做位移
输入延迟 首帧慢还是反馈慢? 卷三·06 动画交互 卷三·03 卡顿 100ms 黄金线被忽视
进程被杀 前/后台? 卷二·05 进程 卷二·03 OOM 多进程"以为"省内存
包体过大 资源 or 代码? 卷五·02 包体积 — 删了字符串没删国际化

# 4.2 按角色反查

我是谁 我应该先看 我应该警惕的章节
新人开发者 卷零·01-03 跳过卷零直接看具体技术
老开发者 卷零·05-06 用经验代替求证
性能架构师 卷一全部 + 卷零·06 只关注监控不关注治理
SRE/QA 卷零·02 + 卷一·03 数据本身不可信而做决策
跨端开发 卷零·01 + 02 把 API 差异等同于原理差异
嵌入式 卷零·01 + 卷二·01/06 + 卷四·05 用桌面经验照搬 RTOS

# 4.3 按工具反查

我手上有的工具 应配合的章节
Perfetto / Systrace 卷二·01 CPU + 卷三·03 卡顿
Instruments 卷二·02 内存 + 卷三·01 渲染
Chrome DevTools 卷三·06 动画交互 + 卷四·02 网络
Charles / Wireshark 卷四·02 网络 + 卷五·04 弱网
Bugly / Crashlytics 卷五·01 崩溃 + 卷一·02 稳定性
自研 APM 卷一·01 APM + 卷一·03 数据治理

# 五、目录与阅读路径

# 0️⃣ 卷零 公共方法论(专栏宪法,必读)

后续所有主题文章都引用这 8 篇。如果只读一部分,至少把这 8 篇读完。

文档 一句话定位
01.性能工程总论原理 用「资源×时间×流水线」模型解释一切性能问题
02.跨平台指标体系 统一指标语言:USE / RED / APDEX + 百分位 + 行业 SLO 基准
03.性能求证方法论 让结论可证伪:实验设计七步法 ⭐
04.数据采集与观测 数据从哪里来、采得对不对、代价多大
05.归因方法与火焰图 自顶向下 + 自底向上的归因路径
06.性能预算防劣化 让优化成果「持续」的工程纪律
07.性能体系全景图 ⭐ 整个专栏的"地图视图":分层 / 链路 / 视角 / 成熟度
08.性能优化误区集 ⭐ 20 个被广泛犯下的认知错误,附数据反证

# 1️⃣ 卷一 体系建设篇(可观测性与稳定性)

文档 核心命题
01.应用APM的设计 可观测性 = 性能工程的地基
02.稳定性专项建设 稳定性是性能的边界条件
03.性能监控数据治理 数据本身需要被治理:跨端口径、采集偏差、可决策性

# 2️⃣ 卷二 资源专项篇(CPU / 内存 / 线程 / 进程 / IO)

文档 核心命题
01.CPU监控与分析 CPU 高 ≠ 慢,等待才是慢
02.内存监控与治理 内存的时间维度比空间维度重要
03.OOM与低内存治理 OOM 是内存治理失败的兜底信号
04.线程模型调度优化 线程是用 CPU 兑换延迟的工具
05.进程与多进程优化 进程是隔离单元,也是性能边界
06.IO与存储性能 IO 是 off-CPU 等待的最大来源

# 3️⃣ 卷三 流水线专项(渲染 / FPS / 卡顿 / ANR / UI / 动画)

文档 核心命题
01.渲染管线与原理 渲染是固定截止时间的流水线
02.FPS与帧率检测 FPS 不是均值游戏,而是抖动游戏
03.卡顿捕获与归因 卡顿是流水线阻塞的可观测投影
04.ANR监控与治理 ANR 是卡顿的极端形态
05.页面UI与布局优化 UI 优化的本质是减少帧产出成本
06.动画交互响应优化 交互延迟比 FPS 更敏感

# 4️⃣ 卷四 业务专项篇(启动 / 网络 / 图片 / 列表 / 功耗)

文档 核心命题
01.App冷启动优化 启动 = 关键路径上的最优化问题
02.网络性能分析优化 网络性能 = 协议效率 + 业务调度
03.图片性能解码优化 图片是带宽 / 内存 / CPU 三资源耦合点
04.列表与滚动性能 滚动是 60fps 流水线的极限考验
05.功耗与电量优化 性能的另一面:单位功耗能跑多远

# 5️⃣ 卷五 交付防御篇(崩溃 / 包体 / 安全 / 弱网)

文档 核心命题
01.崩溃捕获设计实践 崩溃是性能体系的最后一道防线
02.包体积与资源治理 包体积是冷启动 / 安装转化的瓶颈
03.应用安全性能权衡 安全是性能 / 稳定性的隐形成本
04.弱网极端环境治理 实验室数据 ≠ 真实用户环境

# 六、推荐阅读路径(按角色)

# 🟢 跨端开发者(推荐画像)

「我做 Android / iOS / Web / 嵌入式,希望磨平差异学通用思路」

卷零(必读)
  ↓
卷一(建立体系认知)
  ↓
按当前最痛的问题域选卷:
  · 资源痛点 → 卷二
  · 卡顿痛点 → 卷三
  · 业务场景 → 卷四
  · 上线问题 → 卷五
1
2
3
4
5
6
7
8
9

# 🟡 单平台开发者

卷零 第 1-2 篇(建立通用语言)
  ↓
按需进入对应卷
  ↓
回头读卷零剩余方法论
1
2
3
4
5

# 🔴 性能架构师

卷零 全部 → 卷一 全部 → 卷零·06 防劣化
  ↓
建设 SLO / Budget / CI 卡口体系
  ↓
按需引用其他卷
1
2
3
4
5

# 🟣 嵌入式开发者

卷零(必读,特别是 资源×时间×流水线 模型)
  ↓
卷二·01 CPU、卷二·06 IO、卷四·05 功耗
  ↓
其他卷按需引用
1
2
3
4
5

# 七、写作约定

# 7.1 表达规范

  • ❌ 禁止「一般来说」「通常」「大概」等模糊表述。
  • ✅ 必须 标注测试环境(设备/版本/网络/数据集)。
  • ✅ 必须 给出**百分位(P50/P90/P99)**而非均值。
  • ✅ 必须 在每个建议后注明反例 / 适用边界。

# 7.2 数据规范

  • 任何数字结论需附 样本量 + 置信区间。
  • 性能比较使用 CDF 曲线 + 直方图。
  • 实验结论必须可被他人复刻。

# 7.3 图示规范

每篇至少包含:

  • 1 张第一性原理模型图(资源×时间×流水线)
  • 1 张跨平台对照矩阵
  • 1 张归因决策树
  • 1 张优化前后数据对比图(带置信区间)

# 八、跨平台统一术语

后续章节出现这些词时,默认指统一术语,再视情况下钻到平台特化。

统一术语 Android iOS Web 嵌入式
主线程 UI Thread Main Thread Main JS Thread UI Task
帧时钟 Vsync / Choreographer CADisplayLink rAF 显示 IRQ
任务队列 MessageQueue RunLoop sources Task Queue OS Queue
内存回收 ART GC ARC V8 GC free / 引用计数
渲染管线 Measure→Layout→Draw→Composite Layout→Display→Composite Style→Layout→Paint→Composite 自定义
采样器 Tracepoint / perfetto os_signpost / Instruments Performance API ftrace / lttng

# 九、专栏建设路线

按风险递增、收益递增的顺序分四阶段:

# P1 立柱阶段 ✅ 已完成

  • 卷零 6 篇方法论
  • README 阅读地图
  • 整体方案设计

# P2 标杆重构 ✅ 已完成

按 11 章模板完整重写,作为后续模板:

候选 卷归属 推荐理由
CPU 监控与分析 卷二 资源类代表,方法论密度高
渲染管线与原理 卷三 流水线类代表,跨端同构性最强
App 冷启动优化 卷四 业务类代表,关键路径分析最直观

# P3 批量重构 ✅ 已完成

  • 按卷推进剩余文章重构
  • 完成 6 篇新增正文(数据治理 / IO / 动画 / 列表 / 功耗 / 弱网)

# P4 联动打磨 🟡 进行中

  • 交叉引用、对照速查、阅读路径打磨
  • 持续添加跨端实测数据
  • 收集线上典型案例补入「实战案例」章节

# 十、专栏现状与质量基线

# 10.1 完成度

卷 篇数 状态
卷零 公共方法论 8 ✅
卷一 体系建设篇 3 ✅
卷二 资源专项篇 6 ✅
卷三 流水线专项 6 ✅
卷四 业务专项篇 5 ✅
卷五 交付防御篇 4 ✅
合计 32 24 篇专项 + 8 篇方法论

# 10.2 质量基线

每篇都满足:

  • ✅ 11 章固定结构
  • ✅ 二/三级标题字数受控
  • ✅ 跨平台同构论证 + 平台差异矩阵
  • ✅ 三类采集方案的本质拆解
  • ✅ §5 完整三个求证实验(九步骤探索叙事)
  • ✅ 跨端 + 平台特异两个案例
  • ✅ 防劣化三道防线 + SLO
  • ✅ 0 lint 问题

# 十一、一句话总结

方法论是宪法(卷零),体系是地基(卷一),资源 / 流水线 / 业务是三视角(卷二/三/四),交付防御是边界(卷五)。 六卷一体,不缺不冗,跨端同构,求证可信。

上次更新: 2026/06/07, 10:26:12
README
性能工程总论原理

← README 性能工程总论原理→

最近更新
01
信号崩溃快速排查
06-15
02
CoreDump破案
06-15
03
perf火焰图实战
06-15
更多文章>
Theme by Vdoing | Copyright © 2019-2026 杨充 | MIT License | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式