ECMAScript5中数组方法的性能问题
来源:互联网 发布:linux 设置命令别名 编辑:程序博客网 时间:2024/06/04 18:31
经常在Codewars打怪升级,练习JS的时候很喜欢使用ES5中的一系列数组方法。
比如filter,map,reduce这样的函数式方法。
可以达到精简代码的目的。
然而,在一次提交代码的过程中,我突然萌生一种想法。
看不使用ES5的方法,纯for循环,性能会不会提升。
然后,我把函数式代码通通改为for循环,提交测试。
结果让我很吃惊,上百个测试用例,for循环提交后的性能有明显的提升。
于是,我不得不猜测,ES5包装后的语法糖,为什么会这么慢。
凭我的个人经验,猜测有2点原因:
1. 这些方法讲究纯净性,开辟新数组装元素,而不是直接操作原数组,牺牲了性能。
2. 这些方法作为标准方法,肯定有大量的异常情况验证,这些验证也是导致性能降低的原因。
当然,实际开发中,基本上不会遇到使用ES5方法会导致性能明显降低的情况。
只有数据量非常大的时候,才有这样的现象。
阅读全文