1. 程式人生 > >ECMAScript5中陣列方法的效能問題

ECMAScript5中陣列方法的效能問題

經常在Codewars打怪升級,練習JS的時候很喜歡使用ES5中的一系列陣列方法。

比如filtermapreduce這樣的函式式方法。

可以達到精簡程式碼的目的。

然而,在一次提交程式碼的過程中,我突然萌生一種想法。

看不使用ES5的方法,純for迴圈,效能會不會提升。

然後,我把函式式程式碼通通改為for迴圈,提交測試。

結果讓我很吃驚,上百個測試用例,for迴圈提交後的效能有明顯的提升。

於是,我不得不猜測,ES5包裝後的語法糖,為什麼會這麼慢。

憑我的個人經驗,猜測有2點原因:

1. 這些方法講究純淨性,開闢新陣列裝元素,而不是直接操作原陣列,犧牲了效能。

2. 這些方法作為標準方法,肯定有大量的異常情況驗證,這些驗證也是導致效能降低的原因。

當然,實際開發中,基本上不會遇到使用ES5方法會導致效能明顯降低的情況。

只有資料量非常大的時候,才有這樣的現象。