1.2 性能与可维护性的权衡
声明式代码的可维护性更好,但更新时必然多出「找出差异」的开销;框架的设计目标就是把这部分开销压到最小。
一、性能公式
把直接修改的性能消耗记为 A,把找出差异的性能消耗记为 B:
| 范式 | 更新性能消耗 |
|---|---|
| 命令式 | A |
| 声明式 | B + A |
- 命令式:开发者明确知道哪些内容发生了变更,只做必要的修改即可,因此理论上能做到极致的性能优化。
- 声明式:框架并不知道哪里变了,必须对比前后差异才能只更新变化的地方,多出的就是
B。
声明式代码的性能不可能优于命令式代码——这是范式本身带来的固定成本。
二、可维护性
- 命令式开发要维护实现目标的整个过程,DOM 操作与业务逻辑混在一起。
- 声明式代码展示的就是结果,过程由框架承担,代码更直观。
- 结论:用可维护性换性能,而框架设计者要做的就是让这个交换尽量划算——在保持可维护性的同时让性能损失最小化。
三、如何减小 B
- 只要
B足够小,声明式代码的性能就能无限接近命令式。 - 所谓虚拟 DOM,正是为了最小化「找出差异」这一步的性能消耗而出现的(见 1.3 虚拟 DOM 的性能到底如何)。
取舍不是「哪个更快」,而是「多花的那份开销能不能被工程效率的提升赚回来」——应用规模越大,收益越明显。
相关
- 1.1 命令式与声明式:两种范式的定义与写法对比。
- 1.3 虚拟 DOM 的性能到底如何:把
B降到最低的具体手段。