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