遍历的性能(执行速度的角度)比较

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
经验分享 程序员 微信小程序 职场和发展