ECMAScript5中数组方法的性能问题

经常在Codewars打怪升级,练习JS的时候很喜欢使用ES5中的一系列数组方法。

比如filtermapreduce这样的函数式方法。

可以达到精简代码的目的。

然而,在一次提交代码的过程中,我突然萌生一种想法。

看不使用ES5的方法,纯for循环,性能会不会提升。

然后,我把函数式代码通通改为for循环,提交测试。

结果让我很吃惊,上百个测试用例,for循环提交后的性能有明显的提升。

于是,我不得不猜测,ES5包装后的语法糖,为什么会这么慢。

凭我的个人经验,猜测有2点原因:

1. 这些方法讲究纯净性,开辟新数组装元素,而不是直接操作原数组,牺牲了性能。

2. 这些方法作为标准方法,肯定有大量的异常情况验证,这些验证也是导致性能降低的原因。

当然,实际开发中,基本上不会遇到使用ES5方法会导致性能明显降低的情况。

只有数据量非常大的时候,才有这样的现象。

猜你喜欢

转载自blog.csdn.net/esir82/article/details/78885958