简单测试一下js常用三个循环的性能情况
测试代码如下,分别在不同内存情况、不同循环次数下的执行耗时情况。
执行环境为 Mac M3芯片的 nodejs 环境。
1 | const max = 100000000 |
1、一亿次循环结果比较
当内存为10G的时候,循环耗时 map < foreach < forin
当内存为5G的时候,循环耗时 foreach < forin < map
其中最后使用3072M内存的时候直接内存溢出了,没有结果
2、一千万次循环结果比较
当内存为10G的时候,循环耗时 forin < foreach < map
当内存为5G的时候,循环耗时 forin < foreach < map
当内存为3G的时候,循环耗时 forin < foreach < map
可以看出此内存环境下,三者耗时情况一样
2、一百万次循环结果比较
当内存为10G的时候,循环耗时 foreach < forin < map
当内存为5G的时候,循环耗时 foreach < forin < map
当内存为3G的时候,循环耗时 foreach < forin < map
可以看出此内存环境下,三者耗时情况一样
2、十万次循环结果比较
当内存为10G的时候,循环耗时 foreach < map < forin
当内存为5G的时候,循环耗时 foreach = map < forin
当内存为3G的时候,循环耗时 foreach = map < forin
此环境下耗时成了个位数了,foreach和map差不多,forin耗时稍微大一点。
结论
forin、foreach、map 三个循环耗时在数据量不大的时候大体来说相差不是很多。
数据量非常大的时候耗时又跟内存情况有关系,这个还真不好下结论。
不过对于日常开发来说也用不到那么大量的循环,个人感觉怎么方便怎么来吧,易读性和可维护性比这点性能更加重要。