ホームページ >バックエンド開発 >PHPチュートリアル >BlackFireによるPHPレベルのパフォーマンス最適化
Blackfire:ホームステッドのパフォーマンスのボトルネックのピンポイントと修正改善アプリケーション
重要な洞察:
ブラックファイアメトリックの理解:
開始する前に、Blackfireのパフォーマンスグラフで使用されている重要な用語を定義しましょう:
リファレンスプロファイル:アプリケーションの初期パフォーマンスベースライン。その後のプロファイルは、このベースラインと比較され、改善を測定します。
排他的時間:
特定の関数/メソッドのみで費やされる時間は、呼ばれる関数に費やされる時間を除きます。Blackfireで最適化:ケーススタディ
ホームページにベンチマークします。これは、あらゆるWebサイトの重要なページです。ここでの読み込み時間の遅い時間は、ユーザーエクスペリエンスと跳ね返りに直接影響します。他のページ(例:画像アップロード)をテストすることができますが、読み取りパフォーマンスは通常、書き込みパフォーマンスよりも優先されます。
最初のアプリは、すべてのギャラリーを年齢ごとにロードおよびソートします。 プロファイルするには、ホームページを開き、[ブラックファイア拡張]ボタンをクリックして、「プロファイル!」を選択します。 初期プロファイルの結果:
グラフは、
が包括的時間の100%を消費していることを明らかにしており(濃いピンクのセクション)、それが主要なボトルネックであることを示しています。 他の方法では、より大きな淡いピンクのバー(包括的時間)が表示される場合がありますが、これらは従属関数の累積時間を表しています。 濃いピンクのセクションは、すぐに注意が必要な関数を表しています。RAMモードに切り替えると、TwigレンダリングがRAMの過半数(約40MB)を消費することが示されています。これは、大量のデータがレンダリングされていることを考えると予想されます。
PDOExecute
ホットパス(厚い境界線)は、ボトルネックを明確に強調しています。 集中的なノード(時間を費やしたノード)は、ホットパスの直接の一部ではない場合でも、問題を示すことができます。
分析では、および
ページネーションの実装:PDOExecute
unserialize
a 定数を
に追加し、12のような値に設定します。ギャラリーのフェッチング手順を変更して、ページネーションを使用してください:PER_PAGE
HomeController
怠zyな読み込みのためのホームビューにjavascriptを追加します:
<code class="language-yaml"># blackfire: # - id: foo # token: bar # client-id: foo # client-token: bar</code>
<code class="language-php">$galleries = $this->em->getRepository(Gallery::class)->findBy([], ['createdAt' => 'DESC'], self::PER_PAGE);</code>
HomeController
<code class="language-html+php">{% block javascripts %} {{ parent() }} {% endblock %}</code>
メモリの使用量は10倍減少し、読み込みはほぼ瞬時です。 新しいボトルネックは、開発環境の結果です。生産モードに切り替えると、パフォーマンスがさらに向上します:DebugClass
結論:
アプリケーションのパフォーマンスは劇的に改善され、ページの読み込み時間は58msになります。 さらなる最適化は最小限です。 BlackFireを使用した定期的なパフォーマンステストは非常に重要であり、CI/CDパイプライン(BlackFireのプレミアムプランで利用可能)に統合することを強くお勧めします。 PHPパフォーマンスの最適化に関するよくある質問(FAQ):提供されたFAQセクションは、一般的にPHPのパフォーマンスの最適化に関連する貴重な情報を提供するため、ほとんど変わらないままです。 監視ツール、一般的な問題、最適化技術、スケーラビリティ、ベストプラクティスなどのトピックを正確にカバーしています。
以上がBlackFireによるPHPレベルのパフォーマンス最適化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。