# ❓ 为什么普通 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

# 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