遍历的性能(执行速度的角度)比较
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
