原來就不慢,為什么還能提高這么多,哪方面提的速呢?---把我下面的回復放上來,當作問題的補充---因為pcre本身也是用c寫的,并不是動態編譯。我現在不明白的是它如何動態編譯的,是分析二進制代碼然后再重新編譯?還是先運行一個虛擬機,再在上面跑,然后再分析?還有就是如何優化的?最近一直再看pcre的源碼(英文比較爛,看的慢,剛把未用JIT的代碼看了個大概),覺得原來的代碼并沒有多少冗余,如果再打開c編譯器的優化選項,覺得從代碼本身來看并沒有多大的優化余地,看了pcre的幫助文件也沒說清楚原理,只說表達式里包含循環或者表達式越長用JIT的優化效果越明顯,測試了確實如此。再就是對這個比較感興趣是也寫過一個正則表達式引擎,速度和未用jit加速的pcre差不多,而且能優化的手段基本都用了,所以非常好奇jit是怎么優化的。
正則表達式引擎pcre使用JIT(即時編譯)后比不使用速度快了好幾倍(甚至10倍),為什么這么快?
翻閱古今
2019-04-09 20:24:01