优化替换的性能

Satus
Done
Type
Optimizer 👌
Push time
Mar 2, 2022
Pushed
Pushed
JavaScript性能优化--循环优化_zem-CSDN博客_js循环优化
循环是我们在写代码时经常用到的一种结构,而往往在考虑性能优化时,循环的优化能带来很大的收益,特别是当我们不得不循环多次时,如果没对性能进行优化,那毫无疑问会带来性能的负担。 for循环可能是我们最常用的循环,相对于其他种循环来说,for循环将初始化,判断终止条件,判断值的改变明显地写在了括号内,更为直观。 for(var i=0;i<sum;i++){ //... } var i=0; while(i<sum){ // ... i++; } var i=0; do{ // ... i++; }while(i<sum) for-in循环一般用于遍历对象中的key,一般不会使用for-in,因为for-in循环会对性能有更多消耗,会在下文提及原因 for(var prop in object){ // ... } for-of循环也可用于一个有Iterator的对象,如数组,具体可见 ES6学习笔记(六)Iterator接口 ,与for-in不同的是,for-of可以使用break和return语句来跳出循环。然而,虽然其性能消耗比for-in少,但是其性能消耗相对于前三种来说还是更多的,将在下文提及原因 for(var val of arr){ // ... } 在对上面的几种循环遍历数组进行测试后,可以发现for-in循环和for-of循环的速度明显慢于其它三种,对于for-in来说,需要同时遍历实例和原型链,在遍历上的消耗更多,而对于for-of来说,需要去调用Symbol.iterator函数来构建一个迭代器,自动调用next(),且不向next()传入任何值,在接收到done:true之后停止,自然回比前三种方法慢。 (这里的性能测试我使用了console.time()和console.timeEnd()之间的时间差距来比对,因为会受浏览器等各种因素影响,上面的结论是我测试了多组数据后得出的结论) let arr = []; arr.length = 10000; arr.fill(1); (function() { console.time('for循环'); for (var i = 0; i < arr.length; i++) { // ...
JavaScript性能优化--循环优化_zem-CSDN博客_js循环优化
  • 使用逆序遍历
  • 使用 for(let i = 0;len=arr.length;i<len;i++)
  • 使用 TimeOut 不阻塞 UI