Javascript优化
Javascript 代码优化
针对的代码的优化,无非一下两点
- 使得计算量减小
- 使得计算效率提高
从以上两点出发,可总结为如下
减少计算
- 使用正确的数据结构。例如查询时 Map 和 Set 优于 Array
- 缓存结果,减少计算。例如使用
useMemomemolodash.memorize来减少计算 - 减少多次的 DOM 操作,将多个操作合并为一个
- 减少重绘和重排
- 使用事件委托
提高效率
-
使用位运算
-
数字比较速度优于字符串比较。例如枚举时,使用数字来代替字符串
-
Avoid different shapes(避免修改对象类型)
由于 Javascript 底层,对象对应的是 Hidden Class,如果修改对象的属性类型,则需要将原 Hidden Class 销毁再重新创建,这会带来性能损耗。
-
Avoid large objects(避免大对象)
当对象过大时,由 Hidden Class 转为 HashMap 存储
-
Avoid array/object methods
数组和对象处理时,命令式编程比函数式效率更高
-
Avoid indirection
直接访问比间接访问效率更好,例如 object vs proxy;
user.idvsuser['id'] -
Avoid cache misses
- Accessing data sequentially(访问有序数据)能更高的利用内存访问机制
- 利用 CPU 的 3 级缓存,来存储常量
-
使用 requestAnimationFrame
-
使用 Web Workers