Zend JIT 即時編譯器開源

jopen 9年前發布 | 10K 次閱讀 Zend

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
不幸的是 JIT 并沒有提升真實應用的性能,同時 LLVM 編譯時間也不適合運行時代碼生成的。

來自:http://www.oschina.net/news/60073/zend-jit-opensource

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!