ホームページ >バックエンド開発 >PHPチュートリアル >PHP 7 を高速化する (GCC PGO)_PHP チュートリアル
私たちは PHP7 のパフォーマンスを向上させるために熱心に取り組んできました。先月、GCC の PGO が WordPress のパフォーマンスを 10% 近く向上させることができることに気づきました。
ただし、名前が示すように、PGO (プロファイルガイド付き最適化、興味がある場合は Google で検索してください) は、フィードバックを取得するためにいくつかのユースケースを使用する必要があります。つまり、この最適化は特定のシナリオにバインドされる必要があります
。あるシナリオでの最適化が別のシナリオで裏目に出る可能性があります。これは普遍的な最適化ではありません。そのため、これらの最適化を単純に組み込むことはできません。また、PGO によってコンパイルされた PHP7 を直接リリースすることもできません。
もちろん、PGO からいくつかの一般的な最適化を見つけて、手動で PHP7 に適用しようとしていますが、これでは明らかにシーンの特別な最適化で達成できる効果を達成できないため、簡単に紹介するためにこの記事を書くことにしました。 PGO を使用して PHP7 をコンパイルし、コンパイルした PHP7 で独自の独立したアプリケーションをより高速に作成できるようにする方法。まず最初に、フィードバック GCC にどのシナリオを使用するかを決定します。通常、最適化したいシナリオでは、訪問数が最も多く、最も時間がかかり、リソースの消費が最も多いページを選択します。
WordPress を例として、WordPress のホームページを選択します (ホームページが最もアクセスされることが多いため)。 私のマシンを例に挙げてみましょう
:
リーリーphp-fpm は固定の 32 ワーカーを使用し、opcache はデフォルト設定を使用します (必ず opcache をロードしてください)
最適化シナリオとして wordpress 4.1 を採用します。
まず、PHP7 で WP の現在のパフォーマンスをテストしてみましょう (ab -n 10000 -c 100):
リーリー現在このマシンには WordPress 4.1 が搭載されており、ホームページの QPS は 1116.48 に達することができます。つまり、1 秒あたり非常に多くのホームページへのリクエストを処理できることがわかります。
それでは、GCC を教え始めて、WordPress 4.1 をより速く実行する PHP7 をコンパイルさせてみましょう。まず、GCC 4.0 以降が必要ですが、皆さんには GCC-4.8 以降 (現在は GCC-5.1) を使用することをお勧めします。最初のステップは、PHP7 のソースコードをダウンロードし、次に ./configure を実行することです。これらに違いはありません。
次に、最初に PHP7 をコンパイルし、プロファイル データを生成する実行可能ファイルを生成する必要があります。 リーリー注意してください、prof-gen パラメータを使用しました (これは PHP7 の Makefile に固有のものです。他のプロジェクトではこれを行わないでください:))
それでは、GCC のトレーニングを始めましょう:
リーリーつまり、php-cgi で WordPress ホームページを 100 回実行して、その過程でプロファイル情報を生成します。
次に、PHP7 の 2 回目のコンパイルを開始します。
リーリーさて、これで簡単です。PGO のコンパイルは完了しました。次に、PGO コンパイル後の PHP7 のパフォーマンスを見てみましょう:
リーリー現在、1 秒あたり 1191.78 QPS を処理できるようになり、改善は ~7% です。悪くありません (10% とは言いませんでしたか? どうして 7% なのでしょうか?) ハハ、前にも言ったように、PGO を分析しようとすると、いくつかの最適化を行った後、いくつかの一般的な最適化を手動で PHP7 に適用しました。つまり、より一般的な最適化の ~3% が PHP7 に含まれており、もちろんこの作業はまだ続いています)。
独自の製品の古典的なシーンを使用して、いくつかの簡単な手順で改善できます。ありがとう
編集者注: この記事は PHP マスター ——Brother Bird @Laruence の著作です。元のアドレス: http://www.laruence.com/2015/06/19/3063.html
http://www.bkjia.com/PHPjc/1021432.html
http://www.bkjia.com/PHPjc/1021432.html