帶 JIT 的 PHP 8 發佈了! 咱們來跑個分~

PHP8 Benchmark the Brainfuck Way

這篇文章的 demo 源碼能夠在個人 Github 找到: github.com/karminski/P…php

PHP8 已經發布了, 帶來了全新的, 使人興奮的 JIT 編譯引擎. 根據官方文檔描述: "它在綜合基準測試中的性能提升了大約 3 倍, 在某些特定的長期運行的應用程序中提升了 1.5-2 倍. 典型的應用程序性能與 PHP 7.4 至關.".git

官方性能測試結果以下圖:github

那麼實際狀況如何?

因而我寫了個簡單的跑分 demo, 是一個從 Go 語言移植過來的 brainfuck 語言 解釋器.數組

源碼見: run.php. 裏邊順便還包含了 brainfuck 實現的 曼德博集合(Mandelbrot set). 程序即用 PHP 編寫的 brainfuck 語言解釋器運行 brainfuck 編寫的生成曼德博集合的程序. 而後計時並比較其性能.markdown

個人機器配置爲: Intel(R) Xeon(TM) E5-2680v2 @2.8GHz.oop

PHP 8.0.0 沒有開啓J IT 測試結果

PHP 8.0.0 開啓 JIT 測試結果

結論

從測試數據看, 未開啓 JIT 耗時 6m20.973s, 開啓 JIT 耗時 2m48.527s. 單從這一測試結果講, 性能提高了 2.26 倍. demo 程序大部分時間都在作 ```foo++;\`\`\`, \`\`\`foo--;```, 數組查找並賦值這樣的操做, 其中最多的 ```op_inc_dp``` 邏輯, 即 ```$dataPtr++;``` 執行了 4,453,036,023 次.性能

就本次測試結果而言, PHP 8 引入了 JIT 的性能提高是顯著的. 這爲 PHP 帶來了新的可能性. 但同時咱們也看到官方測試中, 一些複雜的應用 (好比WordPress) 提高很微弱. 目前還不知道是由於 JIT 仍處於初期階段致使性能提高不顯著, 仍是由於 WordPress 因爲是既存項目, 代碼不可能爲 JIT 專門優化過而致使性能提高不明顯. 這部分還須要經過詳細的 benchmark (好比使用火焰圖) 來進行研判.測試

做爲一個從 PHP 4 一路使用過來的老用戶, 對 PHP 的感情是複雜的, PHP 如今十分缺少一個強力的生態來從新喚醒. 而這須要廣大 PHPer 的共同努力. 期待將來 PHP 能有更好的表現.優化

Reference

License

相關文章
相關標籤/搜索