快速 Diff 算法实测下来是性能最优的。本质上它包含了预处理的行为,借鉴了文本 Diff 中的预处理思路。
在最开始的时候,快速 Diff 先从新旧节点序列的头部和尾部分别进行比较,找到头部和尾部有哪些节点是不需要移动的,直接更新即可。在做完了这一步之后,新旧节点序列都会剩下一部分节点,这部分节点有可能可以通过直接新增节点或者卸载节点进行处理。
在做完上述处理后,剩下的节点都需要进一步的处理。无论是简单 Diff 算法、快速 Diff 算法,还是快速 Diff 算法,处理规则都是:
- 判断是否有节点需要移动,以及应该如何移动;
- 找出那些需要被添加和移除的节点。
大约 7 分钟