yi一开始学js的时候, 老师就告诉我们, 循环的时候存一下数组长度, 不用每次都去读取, 以提高性能. 于是今天尝试验证了一下:
var m = [1, 2, 3]
console.time(1)
for (let i = 0; i < 1000000000 && m.length > 0; i++) {}
console.timeEnd(1)
console.time(2)
for (let i = 0; i < 1000000000; i++) {}
console.timeEnd(2)node中跑里几次, 结果都差不多:
1: 512.028ms
2: 504.198ms
于是带着疑问在chrome中跑了一下:
1: 6660.718017578125ms
2: 503.8818359375ms
更正: 之前用m.length>0浪费了不少性能, 改如下
var m = [1, 2, 3]
console.time(1)
for (let i = 0; i < 1000000000; i++) {
m.length
}console.timeEnd(1)
console.time(2)
for (let i = 0; i < 1000000000; i++) {}
console.timeEnd(2)chrome的结果:
1: 552.591796875ms
2: 512.572021484375ms
似乎...影响真的不大嘛
面对以上结果, 我仍旧不死心
var m = [1, 2, 3]
var i = 0
console.time(1)
while (m.length) {
i++
if (i > 1000000000) break
}
console.timeEnd(1)
i = 0
console.time(2)
while (true) {
i++
if (i > 1000000000) break}
console.timeEnd(2)chrome的结果:
1: 7494.678955078125ms
2: 1566.7392578125ms
(๑•̀ㅂ•́)و✧ (๑•̀ㅂ•́)و✧ (๑•̀ㅂ•́)و✧ 老师诚不欺我!!!