遍历的性能(执行速度的角度)比较
1,js中有很多遍历方法:
for(arr.length);
for... of... ;
for...in...;
数组的Array
forEach;
Map;filter;
some;every;
Map和Set
for...of...
迭代器模式 iteration成为迭代器,又叫遍历器。它的作用是给不同的数据结构(
-
Array Map Set String TypedArray 函数的 arguments 对象 NodeList 对象
)提供统一的遍历访问机制,这种机制可以使得数据结构里的成员按照顺序依次被遍历访问,最常见的就是数组、map的遍历了(应用场景for...of...和解构)。总结集成度越高,对单一遍历就会慢且耗费性能
2,每个进行10万次数比较
var和let性能比较。结果快一倍。
console.time("var") for(var i=0;i<100000;i++){ } console.timeEnd("var") console.time("let") for(let i=0;i<100000;i++){ } console.timeEnd("let") VM1341:4 var: 2.192138671875ms VM1341:8 let: 1.200927734375ms
for和while比较
console.time("for") for(var i=0;i<100000;i++){ } console.timeEnd("for") console.time("while") let j = 0 while(j<100000){ j++ } console.timeEnd("while") VM1469:4 for: 4.27294921875ms VM1469:10 while: 7.34912109375ms
if-else和switch
console.time("if else") for(var i=0;i<1000000;i++){ let n = Math.ceil(Math.random()*3+1) if(n==1){ }else if(n==2){} } console.timeEnd("if else") console.time("swich") for(var i=0;i<1000000;i++){ let n = Math.ceil(Math.random()*3+1) switch(n){ case 1: break case 2: break case 3: break } } console.timeEnd("swich") VM1908:8 if else: 44.821044921875ms VM1908:21 swich: 31.219970703125ms
...和split的区别
console.time("split") for(let i=0;i<100000;i++){ let list= "1234567890".split("") } console.timeEnd("split") console.time("...") for(let i=0;i<100000;i++){ let liet = [..."1234567890"] } console.timeEnd("...") VM979:5 split: 17.885986328125 ms VM979:10 ...: 98.27294921875 ms
forEach 和for...of...
console.time("forEach") for(let i=0;i<100000;i++){ let list = [1,2,3,4,5,6,7,8,9,0] list.forEach(function(){ }) } console.timeEnd("forEach") console.time("for of") for(let i=0;i<100000;i++){ let list = [1,2,3,4,5,6,7,8,9,0] for(let item of list){ } } console.timeEnd("for of") VM1570:8 forEach: 8.301025390625 ms VM1570:16 for of: 4.548095703125 ms