for in,for of, for, map, some, forEach
日常大部分循环都喜欢用map
除非有些做判断校验中途停止 return true 的用some
想问下对于浏览器来说需要关心这种「性能优化」不,个人感觉可能用 for forEach 这种性能好点 但也就是 几(几十)毫秒的事吧。需要根据不同场景使用不同循环操作不
大家一般前端代码循环都用啥呢
用 timeEnd 试了下 数组 10w 长度时,for:1.8ms map:2.0ms 数组 100w 长度时, for:2.6ms map:12.7ms 差的还是有点多,但差这么 10ms 好像根本也无所谓。 基本也不会这么大数据来循环
1
DOLLOR 2022-03-23 12:09:03 +08:00
循环性能考虑不多,更多的是考虑 IO 性能。
像你这 100w 数据的循环性能,确实影响不大。 但这 100w 数据从数据库里查出来再返回到浏览器,这造成的性能影响比循环大多了。 |
2
murmur 2022-03-23 12:36:07 +08:00
100w 这个数据是什么需求,给个场景,不要说什么视频编解码,这玩意就是应该给后端用 c 算的,或者做 app 调汇编专用指令集做
|
3
lifesimple OP |
4
simple233 2022-03-23 13:37:09 +08:00
不用考虑性能,差距很小...
|
5
Leviathann 2022-03-23 13:44:53 +08:00
什么 10w 100w
反正我基本拿到手的极少超过 100 而且一般还是有网络请求的时候才会有循环,一来一回就几十毫秒过去了 不过 some find 啥的是无法完全对应 foreach 的操作的 比如一个 function 的 list ,遍历过去当 function 的返回值符合条件的时候退出循环,并拿到这个返回值 只能通过外部临时变量存计算的返回值,从代码语义上看这个还不如用 forEach |
6
yaphets666 2022-03-23 13:46:09 +08:00 via iPhone
最优的就是 for ,不过需要考虑循环性能的时候,大概率是设计有问题
|
7
fishlium 2022-03-23 13:51:26 +08:00
不用考虑,较真就是 for 性能好一丢丢
|
8
Vegetable 2022-03-23 13:53:23 +08:00
没啥区别吧,jit 的
|
9
Buges 2022-03-23 13:56:17 +08:00 via Android
如果你要做的操作多了,map/filter 之类的函数性能就十分差了,js 里这些函数都不是 lazy 的。
|
10
xingyue 2022-03-23 14:04:49 +08:00
|
11
autoxbc 2022-03-23 14:13:54 +08:00 1
第一考虑准确的语义;
第二考虑恰当的实现; 第三才是性能差异; 语义和性能比较好理解,恰当的实现类似这种: 拿到数组应该用 forEach ; 拿到对象字面量应该用 for ... in ; 拿到迭代器应该用 for ... of ; 不恰当的实现类似这种: 拿到任何数据先转换成数组,然后统一用 forEach ; |