Zend JIT 即時編譯器開源

TP_funny發表於2015-03-02
原始碼地址:
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 倍
TestJIT offJIT onsimple0.0300.004simplecall0.0130.000simpleucall0.0400.008simpleudcall0.0410.008mandel0.2100.007mandel20.2800.009ackermann(7)0.0620.014ary(50000)0.0060.003ary2(50000)0.0050.003ary3(2000)0.0880.027fibo(30)0.1260.037hash1(50000)0.0170.012hash2(500)0.0170.010heapsort(20000)0.0530.018matrix(20)0.0550.024nestedloop(12)0.0590.010sieve(30)0.0390.007strcat(200000)0.0080.004Total1.1470.206不幸的是 JIT 並沒有提升真實應用的效能,同時 LLVM 編譯時間也不適合執行時程式碼生成的。
來自:開源中國
相關閱讀
評論(2)

相關文章