ホームページ バックエンド開発 PHP7 PHP7の最適化とパフォーマンス向上の方法を解説した記事

PHP7の最適化とパフォーマンス向上の方法を解説した記事

Dec 01, 2021 pm 02:40 PM
php7 パフォーマンス

PHP7 がリリースされました。この 10 年間で PHP の最大のバージョン アップグレードおよび最大のパフォーマンス アップグレードとして、PHP7 は複数のテストで明らかなパフォーマンスの向上を示しました。ただし、それを機能させるには最大のパフォーマンスを実現するために、いくつか注意すべき点があります。

PHP7の最適化とパフォーマンス向上の方法を解説した記事

1. Opcache

Zend Opcache を有効にすることを忘れないでください。 Opcache を有効にしなくても PHP7 は PHP-5.6 よりも高速であるため、前回のテスト期間中に Opcache を有効にしなかった人もいます。Opcache を有効にするのは非常に簡単です。php.ini 設定ファイルに

zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1"
ログイン後にコピー
を追加するだけです。

2. 新しいコンパイラを使用します

##新しいコンパイラを使用します。GCC 4.8 以降を推奨します。これは、GCC 4.8 以降の PHP のみが opline およびexecute_data のサポートに対して Global Register を有効にするためです。約 5% のパフォーマンスの向上 (Wordpres の QPS の観点から測定)

実際には、GCC 4.8 より前のバージョンもサポートしていますが、バグをサポートしていることが判明したため、バージョン 4.8 以降である必要があります。この機能はオンになります。

3. HugePage

私の以前の記事でも紹介しました: Hugepage を使用して PHP7 を高速化するには、最初にシステムで HugePages を有効にし、次に有効にしますOpcache の huge_code_pages.

CentOS 6.5 を例として、512 の予約済み巨大ページ メモリを次のように割り当てます:

$sudo sysctl vm.nr_hugepages=512
ログイン後にコピー

:

$ cat /proc/meminfo | grep Huge
AnonHugePages: 106496 kB
HugePages_Total: 512
HugePages_Free: 504
HugePages_Rsvd: 27
HugePages_Surp: 0
Hugepagesize: 2048 kB
ログイン後にコピー

次に、php.ini:

コードは次のとおりです:

 opcache.huge_code_pages=1
ログイン後にコピー

このようにして、PHP は大きなメモリ ページを使用して独自のテキスト セグメントと大量のメモリ割り当てを保存し、TLB ミスを減らし、パフォーマンスを向上させます。

4. Opcache ファイル キャッシュ

Opcache ファイル キャッシュを有効にする (実験的)。これを有効にすることで、Opcache にオペコード キャッシュを外部にキャッシュさせることができます。一部のスクリプトのファイルには、明らかにパフォーマンスが向上します。

php.ini に追加します:

コードは次のとおりです:

opcache.file_cache=/tmp
ログイン後にコピー

このようにして、PHP は /tmp ディレクトリに配置されます。オペコード バイナリをキャッシュします。エクスポート ファイルは、PHP ライフ サイクル全体にわたって存在する可能性があります。


5.PGO

前回の記事: PHP7 を高速化する (GCC PGO) も紹介PHP が WordPress や Drupal など、1 つのプロジェクト専用の場合は、PGO を使用してプロジェクト専用の PHP を改善してみてください。プロジェクトによりパフォーマンスが向上します。

具体的には、最適化シナリオとして wordpress 4.1 を使用します。最初に PHP をコンパイルするとき:

コードは次のとおりです:

$ make prof-gen
ログイン後にコピー

次に、たとえば WordPress のトレーニング PHP プロジェクトを使用します:

コードは次のとおりです:

$ sapi/cgi/php-cgi -T 100 /home/huixinchen/local/www/htdocs/wordpress/index.php >/dev/null
ログイン後にコピー

つまり、php-cgi を WordPress ホームページ上で 100 回実行し、その過程でいくつかのプロファイル情報を生成します。

最後に:

$ make prof-clean
$ make prof-use && make install
ログイン後にコピー
現時点でコンパイルする PHP7 は、プロジェクトに合わせて調整された最高パフォーマンスのコンパイル済みバージョンです。

今はここまでです。後で考えます。付け加えて、皆さんもぜひ試してみてください。ありがとう###

以上がPHP7の最適化とパフォーマンス向上の方法を解説した記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

さまざまな Java フレームワークのパフォーマンスの比較 さまざまな Java フレームワークのパフォーマンスの比較 Jun 05, 2024 pm 07:14 PM

さまざまな Java フレームワークのパフォーマンス比較: REST API リクエスト処理: Vert.x が最高で、リクエスト レートは SpringBoot の 2 倍、Dropwizard の 3 倍です。データベース クエリ: SpringBoot の HibernateORM は Vert.x や Dropwizard の ORM よりも優れています。キャッシュ操作: Vert.x の Hazelcast クライアントは、SpringBoot や Dropwizard のキャッシュ メカニズムよりも優れています。適切なフレームワーク: アプリケーションの要件に応じて選択します。Vert.x は高パフォーマンスの Web サービスに適しており、SpringBoot はデータ集約型のアプリケーションに適しており、Dropwizard はマイクロサービス アーキテクチャに適しています。

PHP 配列キー値の反転: さまざまな方法のパフォーマンス比較分析 PHP 配列キー値の反転: さまざまな方法のパフォーマンス比較分析 May 03, 2024 pm 09:03 PM

PHP の配列キー値の反転メソッドのパフォーマンスを比較すると、array_flip() 関数は、大規模な配列 (100 万要素以上) では for ループよりもパフォーマンスが良く、所要時間が短いことがわかります。キー値を手動で反転する for ループ方式は、比較的長い時間がかかります。

C++ でマルチスレッド プログラムのパフォーマンスを最適化するにはどうすればよいですか? C++ でマルチスレッド プログラムのパフォーマンスを最適化するにはどうすればよいですか? Jun 05, 2024 pm 02:04 PM

C++ マルチスレッドのパフォーマンスを最適化するための効果的な手法には、リソースの競合を避けるためにスレッドの数を制限することが含まれます。競合を軽減するには、軽量のミューテックス ロックを使用します。ロックの範囲を最適化し、待ち時間を最小限に抑えます。ロックフリーのデータ構造を使用して同時実行性を向上させます。ビジー待機を回避し、イベントを通じてリソースの可用性をスレッドに通知します。

ベンチマークを使用して Java 関数のパフォーマンスを評価するにはどうすればよいですか? ベンチマークを使用して Java 関数のパフォーマンスを評価するにはどうすればよいですか? Apr 19, 2024 pm 10:18 PM

Java 関数のパフォーマンスをベンチマークする方法は、Java Microbenchmark Suite (JMH) を使用することです。具体的な手順は次のとおりです。 JMH 依存関係をプロジェクトに追加します。新しい Java クラスを作成し、ベンチマーク メソッドを表す @State アノテーションを付けます。クラス内にベンチマーク メソッドを記述し、 @Benchmark アノテーションを付けます。 JMH コマンド ライン ツールを使用してベンチマークを実行します。

PHP 関数のパフォーマンスはどの程度ですか? PHP 関数のパフォーマンスはどの程度ですか? Apr 18, 2024 pm 06:45 PM

さまざまな PHP 関数のパフォーマンスは、アプリケーションの効率にとって非常に重要です。パフォーマンスの良い関数には echo や print などがありますが、str_replace、array_merge、file_get_contents などの関数のパフォーマンスは低くなります。たとえば、str_replace 関数は文字列の置換に使用され、中程度のパフォーマンスを発揮しますが、sprintf 関数は文字列の書式設定に使用されます。パフォーマンス分析によると、1 つの例の実行にかかる時間はわずか 0.05 ミリ秒であり、関数が適切に実行されることが証明されています。したがって、関数を賢く使用すると、アプリケーションをより高速かつ効率的に実行できます。

PHP 配列をオブジェクトに変換すると、パフォーマンスにどのような影響がありますか? PHP 配列をオブジェクトに変換すると、パフォーマンスにどのような影響がありますか? Apr 30, 2024 am 08:39 AM

PHP では、配列からオブジェクトへの変換はパフォーマンスに影響を与え、主に配列のサイズ、複雑さ、オブジェクト クラスなどの要因によって影響を受けます。パフォーマンスを最適化するには、カスタム反復子の使用、不必要な変換の回避、配列のバッチ変換などの手法を検討してください。

システムの再起動後にUnixSocketの権限を自動的に設定する方法は? システムの再起動後にUnixSocketの権限を自動的に設定する方法は? Mar 31, 2025 pm 11:54 PM

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

Java フレームワークのパフォーマンス比較 Java フレームワークのパフォーマンス比較 Jun 04, 2024 pm 03:56 PM

ベンチマークによると、小規模で高性能なアプリケーションの場合、Quarkus (高速起動、低メモリ) または Micronaut (TechEmpower に優れた) が理想的な選択肢です。 SpringBoot は大規模なフルスタック アプリケーションに適していますが、起動時間とメモリ使用量が若干遅くなります。

See all articles