Zend JIT 即時編譯器開源
Zend 宣布 Zend JIT 開源,源碼地址:
https://github.com/zendtech/php-src/tree/zend-jit/ext/opcache/jit
該分支包含 PHP JIT 的 PoC 概念實現,JIT 是 OPCache 的部分實現,不要求對 PHP 引擎進行任何修改,設計時 100% 兼容。JIT 使用 LLVM 后端,在 x86 和 x86_64 平臺下測試通過。目前該項目還在體驗階段。
構建
PHP 可通過如下參數進行配置和構建。LLVM 代碼不穩定,因此版本間可能會有一些不兼容的問題。建議使用 LLVM 3.5 來避免兼容性問題。
- 
        --enable-jit 
- 
        --with-llvm=/usr/local/llvm-3.5' 
- 
        --with-valgrind 
- 
        --with-oprofile 
配置
為了啟用 JIT 需要在 opcache ini 指令增加新行:
- 
        opcache.jit_buffer_size=32M 
性能
JIT 提供超過 5 倍的性能提升,一些如 Mandelbrot 的性能提升 30 倍
| Test | JIT off | JIT on | 
|---|---|---|
| simple | 0.030 | 0.004 | 
| simplecall | 0.013 | 0.000 | 
| simpleucall | 0.040 | 0.008 | 
| simpleudcall | 0.041 | 0.008 | 
| mandel | 0.210 | 0.007 | 
| mandel2 | 0.280 | 0.009 | 
| ackermann(7) | 0.062 | 0.014 | 
| ary(50000) | 0.006 | 0.003 | 
| ary2(50000) | 0.005 | 0.003 | 
| ary3(2000) | 0.088 | 0.027 | 
| fibo(30) | 0.126 | 0.037 | 
| hash1(50000) | 0.017 | 0.012 | 
| hash2(500) | 0.017 | 0.010 | 
| heapsort(20000) | 0.053 | 0.018 | 
| matrix(20) | 0.055 | 0.024 | 
| nestedloop(12) | 0.059 | 0.010 | 
| sieve(30) | 0.039 | 0.007 | 
| strcat(200000) | 0.008 | 0.004 | 
| Total | 1.147 | 0.206 | 
來自:http://www.oschina.net/news/60073/zend-jit-opensource
 本文由用戶 jopen  自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
                         轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
                         本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!