# ❓ 为什么普通 for 循环的性能远远高于 forEach 的性能,请解释其中的原因
# Browser 环境测试
// 三次结果
// 十万数据
let arrs = new Array(100000)
console.time('for')
for (let i = 0; i < arrs.length; i++) {}
console.timeEnd('for')
console.time('forEach')
arrs.forEach((arr) => {})
console.timeEnd('forEach')
// for: 2.781982421875ms
// 2.991943359375ms
// 2.841064453125ms
// forEach: 0.291015625ms
// 0.31103515625ms
// 0.279052734375ms
// 百万数据
let arrs = new Array(1000000)
console.time('for')
for (let i = 0; i < arrs.length; i++) {}
console.timeEnd('for')
console.time('forEach')
arrs.forEach((arr) => {})
console.timeEnd('forEach')
// for: 11.18701171875ms
// 11.26708984375ms
// 11.363037109375ms
// forEach: 3.033935546875ms
// 2.91015625ms
// 2.97314453125ms
// 千万数据
let arrs = new Array(10000000)
console.time('for')
for (let i = 0; i < arrs.length; i++) {}
console.timeEnd('for')
console.time('forEach')
arrs.forEach((arr) => {})
console.timeEnd('forEach')
// for: 80.82470703125ms
// 84.155029296875ms
// 91.9267578125ms
// forEach: 21.534912109375ms
// 21.403076171875ms
// 27.0390625ms
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# node 环境测试
// node -v
// v10.16.0
// 三次结果
// 十万数据
// for: 2.734ms
// 2.640ms
// 2.672ms
// forEach: 0.377ms
// 0.382ms
// 0.305ms
// 百万数据
// for: 3.622ms
// 3.258ms
// 3.525ms
// forEach: 3.116ms
// 2.650ms
// 2.796ms
// 千万数据
// for: 9.321ms
// 9.849ms
// 9.507ms
// forEach: 36.956ms
// 26.372ms
// 29.404ms
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30