一個附加的無回溯正規表示法引擎
· 閱讀時間約 8 分鐘
從 v8.8 開始,V8 提供一個新的實驗性無回溯正規表示法引擎(除了現有的 Irregexp 引擎以外),該引擎保證相對於主串大小以線性時間執行。實驗性引擎可通過下面的功能標誌開啟。
從 v8.8 開始,V8 提供一個新的實驗性無回溯正規表示法引擎(除了現有的 Irregexp 引擎以外),該引擎保證相對於主串大小以線性時間執行。實驗性引擎可通過下面的功能標誌開啟。
在其默認配置中,V8 在正則表達式首次執行時將其編譯為本地代碼。作為我們對JIT-less V8工作的的一部分,我們引入了一個正則表達式解釋器。解釋正則表達式的優勢是使用更少的內存,但代價是性能下降。在這篇博客文章中,我們描述了如何在減少性能損失的同時利用解釋正則表達式的優勢。
這篇博客文章涉及 V8 最近將 RegExp 的內建函數從一個自託管的 JavaScript 實現遷移到直接掛接到我們基於 TurboFan 的新代碼生成架構上。
自 ECMA-262 規範的第三版引入以來,正則表達式就自 1999 年起成為 JavaScript 的一部分。在功能性和表達能力上,JavaScript 的正則表達式實現與其他程式語言大致相當。