GCC PGO 適應性優化 PHP7 編譯詳細介紹

2021-09-23 18:54:24 字數 1587 閱讀 5774

pgo 即 profile-guided optimization(歸檔引導優化),是一種自適應優化手段,不需要對軟體**本身做出改進,即可獲得效能的提公升,目前已經應用於 gcc、vc++ 等常見的編譯器中。一些開源專案像 firefox 就預設使用 pgo 編譯來優化效能,但是大部分軟體上應用率並不高。

使用 gcc pgo 編譯 php7.0 + opcache,在阿里雲 1核心 1g 記憶體的配置上,wordpress 4.6.0 效能提公升約 5%,drupal 8.1.8 上則提公升約 2%。 當然了,伺服器配置越高,自己身引數設定的好,效能提公升就會越明顯。

所以,下面就來簡單介紹一下如何使用 pgo 來編譯 php7.0。個人絕對 pgo 編譯最好還是應用於,php 公升級的時候,如果在第一次編譯伺服器環境的時候,**沒有搭建完成,進行訓練並不會有明顯的效能提公升。

三、然後我們開始第一次編譯 php,

make prof-gen
四、這時候再 php 目錄下,sapi/cli/phpsapi/cgi/php-cgisapi/fpm/php-fpm這個三個二進位制檔案就會生成,供我們進行針對性的訓練

五、適應性訓練,使用如下命令

sapi/cgi/php-cgi -t 100 /data/www.mf8.biz/index.php >/dev/null
就會自動對/data/www.mf8.biz/index.php進行針對性訓練,一般來說**訪問量最大的就是首頁了,所以我們只要對首頁檔案進行訓練即可。 使用 lnmp 的環境還可以用sapi/fpm/php-fpm代替sapi/cgi/php-cgi,獲得更好的反饋。

值得說明的是,訓練只能對乙個**程式有效,例如訓練的 wordpress 只會對 wp 的效能進行適應性優化。如果伺服器有多種**程式,則可以使用 php_pgo_training_scripts 指令碼來獲得通用性的 pgo 優化。

六、清理第一次編譯生成的二進位制檔案,輸入如下命令

make prof-clean
七、根據訓練反饋的想資訊,進行第二次編譯並進行安裝,輸入如下命令

make prof-use 

make install

注意,有些一鍵包,還有編譯 php 的時候有使用 liconv 庫,所以在make prof-genmake prof-use都別忘記引用額外的庫。

針對 oneinstack 使用者,我對upgrade_php.sh做了個小改動。使用 php7.0 的朋友,可以直接用這個代替/include/upgrade_php.sh檔案。然後公升級 php,就預設有 pgo 優化了。

記得,把裡面的/data/wwwroot/mf8/index.php替換成自己的程式。

GCC PGO 適應性優化 PHP7 編譯詳細介紹

pgo 即 profile guided optimization 歸檔引導優化 是一種自適應優化手段,不需要對軟體 本身做出改進,即可獲得效能的提公升,目前已經應用於 gcc vc 等常見的編譯器中。一些開源專案像 firefox 就預設使用 pgo 編譯來優化效能,但是大部分軟體上應用率並不高。...

讓你的PHP7更快 GCC PGO

我們一直致力於提公升php7的效能,上個月我們注意到gcc的pgo能在wordpress上能帶來近10 的效能提公升,這個讓我們很激動.然而,pgo正如名字所說 profile guided optimization 有興趣的可以google 他需要用一些用例來獲得反饋,也就是說這個優化是需要和乙個...

php7相容spilit PHP7 相容性檢測

php 7 都出到7.4 了,是時候把手中的discuz論壇公升級到php 7了,考慮了半天相容性的問題,準備公升級到php 7.3 discuz 的主程式已經公升級到最新的discuz 20191201版本了,相容php 7.3應該是沒有問題,剩下的就是安裝的那些外掛程式的相容性的問題.檢測php...