天天看點

淺談 js 正則字面量 與 new RegExp 執行效率

裡面講到了優化正則起到提升性能的問題,但是能提升多少呢?

于是我去測試了,發現TMD幾乎微乎其微,我用1千字元串進行100萬次比對測試,優不優化根本沒差別。

淺談 js 正則字面量 與 new RegExp 執行效率

這不科學,我白看了這麼多天正則,上天這是在玩弄我麼。

突然我想到了 compile 方法,然後去測試了下,奇迹出現了,果然優化過的快了不少。

淺談 js 正則字面量 與 new RegExp 執行效率

但這是為什麼呢?

這裡說 compile 方法已被棄用!這不科學。。。

文章大意是說其實 直接 new RegExp 即可,compile 幾乎用不到。

于是乎我修改了代碼再來一次。

淺談 js 正則字面量 與 new RegExp 執行效率

果然,直接 new RegExp 效果和 compile 是一樣的。

不過這隻是 nodejs 下的結果,我們去看看各個浏覽器下的結果如何吧。

淺談 js 正則字面量 與 new RegExp 執行效率

chrome

淺談 js 正則字面量 與 new RegExp 執行效率

firefox

淺談 js 正則字面量 與 new RegExp 執行效率

IE11

淺談 js 正則字面量 與 new RegExp 執行效率

IE8 (我調用了一個插件模拟控制台實作IE6-8調試輸出的)

很明顯,第一名是 chrome (以 reg22 那個優化過的為準),這個号稱武裝到牙齒的貨,果然夠new逼。

不過 firefox 這貨,竟然連 IE8 都比不過,是不是太慫了點。

優化過的 正則 比沒優化的快,那是肯定的。

但是 正則字面量 和 new RegExp 比,那就不是一個檔次了。

為什麼有如此大的差距呢?

其實我也沒搞清楚。

以前看到很多文章都說 字面量 會比 new 對象 形式效率高,但是在正則這裡,好像不是這麼回事。

不過也不能直接否認這個觀點,因為我一直都用字面量的,簡潔美觀,用着友善才是王道。

我覺得在資料量大,或者重複操作次數多的時候用 new RegExp 是很必要的。

因為你也看到了性能提升這麼多。

當然前提條件是你的正則必須優化,正則沒優化的情況,兩種差不多。

是以優化你的正則,然後用 new RegExp 可以大幅度提升程式的性能。

PS: IE11 是個特例,這貨從來不安套路出牌。

好了今天的分享完畢,你們都蠢蠢欲動了吧,快去把正則各種new起來吧。

淺談 js 正則字面量 與 new RegExp 執行效率

繼續閱讀