検索
ホームページバックエンド開発PHPチュートリアルPHP7のパフォーマンスを2倍にする鍵、php7_PHPチュートリアルのパフォーマンスを2倍にする鍵を教えます

PHP7 のパフォーマンスを 2 倍にする鍵、php7 のパフォーマンスを 2 倍にする鍵を理解しましょう

20 年の歴史を持つ Web プログラミング言語 PHP は、年末と同時に PHP 7 の新バージョンをリリースします。これは 10 年ぶりの大幅な改訂であり、以前のバージョンの PHP 5 に比べて 2 倍高速なパフォーマンスの大幅な進歩が特徴です。PHP の父であるラスムス・レルドルフ氏は、 HHVM 仮想マシン上の PHP プログラムよりも高速です。

HHVM は Facebook の Web サイトの特性に合わせてカスタマイズされた PHP 最適化メカニズムであり、どの Web サイトにも適用できるわけではありません。しかし、Rasmus Lerdorf氏は、新バージョンの目標の1つは、開発フレームワークDrupalやオープンソースの電子商取引システムOpencartを使用している場合でも、Webサイト開発者がHHVMテクノロジーを使用しているのと同じパフォーマンスを発揮できるようにすることだと述べた。新バージョンのリリース前夜、彼は機会を利用して台湾を訪れ、PHPConf 台湾年次会議に出席し、PHP 7 のパフォーマンスの飛躍的進歩の鍵を共有しました。

過去 20 年間に多くの改訂と無数の最適化を経てきた成熟した言語の場合、パフォーマンスを 2 倍にするブレークスルーを見つけるのは簡単ではなく、通常の新しいプロジェクトとは異なり、多くのことを見つけるのは簡単だと Rasmus Lerdorf 氏は率直に述べました。新しいバージョンの PHP では、プログラムの一部を変更しただけではこのような結果は得られませんでした。逆にPHP 7は細かな最適化と性能の蓄積を重ねた結果、HHVMと比べても遜色ない実行性能を持っています。

Rasmus Lerdorf と PHP コア貢献チームは、プログラムの実行時に移動されるメモリ ビット数を削減するために多大な努力を費やし、それによって実行パフォーマンスを高速化しました。例えば、PHP の変数を格納するデータ構造 zval は 24 ビットから 16 ビットに削減され、Hashtable は 72 ビットから 56 ビットに削減され、パフォーマンスに改善の余地があるかどうかが検討されます。

メモリ使用量の削減に加えて、Rasmus Lerdorf 氏は、CPU のキャッシュ ラインの動作原理も調べて、プログラム コードが CPU とどのように相互作用するか、新しい CPU アーキテクチャでコンパイラがプログラム コードをコンパイルする方法、その他の詳細を理解しました。 PHP 7 のプログラム コード。最新の CPU のアーキテクチャに準拠しています。各プロジェクトの最適化によるパフォーマンスへの寄与は 0.5% 未満ですが、最適化プロジェクトの数が多かったり、特定の改善された関数がアプリケーションによって繰り返し呼び出されたりするため、修正の全体的な効果はこれほど大きな進歩をもたらす可能性があります。

HHVM からインスピレーションを得て、パフォーマンスと機能の両方を備えた PHP を構築することにしました

PHP の動作を最適化するために、Facebook は JIT コンパイルを使用して仮想マシン HHVM を作成しました。 HHVM は高速な実行パフォーマンスを備えていますが、特定の目的に最適化された設計は少数の開発者しか満足できません。それどころか、Rasmus Lerdorf 氏は、PHP のパフォーマンスを向上させるだけでなく、ハイエンド ユーザーとアマチュア ユーザーのニーズにも同時に応えたいと考えており、PHP 7 をパフォーマンスと一般的な機能の両方を備えたプログラミング言語にしたいと考えています。

ただし、市場で少数の人々のニーズを満たすプログラミング言語を開発することは難しくありません。しかし、PHP プロジェクトは多くのターゲットを対象としており、アマチュアユーザーとプロの開発者の両方のニーズを満たす必要があります。すべてをカバーするのは困難です。常に一部のニーズが存在するためです。グループのニーズを満たすことはできません。「これは、水道管で広い範囲に水を噴霧するようなものです。全員の服は多少濡れますが、完全に濡れている人の服はありません。」ラスムス・レルドルフ氏は語った。

外部フレームワークを使用しない場合の PHP のコンピューティング パフォーマンスは非常に優れていますが、外部フレームワークの影響により、本来は数秒で数千の Web ページ リクエストを処理できる PHP のパフォーマンスが大幅に低下し、数十のリクエストを処理します。 Rasmus Lerdorf 氏は、HHVM が登場する前、ユーザーは PHP のパフォーマンス要件よりも、PHP が Web 開発の困難さを軽減できるかどうかに関心があり、これらのフレームワークによって開発者の作業が容易になると述べました。しかし、Facebook が HHVM を発表した後、PHP のパフォーマンスを重視する多くのユーザーを魅了したため、Rasmus Lerdorf 氏は、多くのユーザーがパフォーマンスを必要としていることに気づきました。彼は、HHVM の JIT アーキテクチャを PHP と統合する方法について考え始めました。

しかし、Rasmus Lerdorf 氏は、PHP と HHVM はアーキテクチャ設計においてまったく異なり、たとえば、HHVM のマルチスレッド アーキテクチャはあまり安定していないと述べました。さらに、HHVM の移植性は良くなく、PHP は Windows 環境で開発している開発者が多く、HHVM はそれらのユーザーをサポートできません。

Rasmus Lerdorf 氏は、PHP の主要なアーキテクチャを放棄することはできなかったが、2 つの統合を検討したが、HHVM の使用には多くの制限があると述べました。 HHVM は Facebook や多くの開発者にとって非常に優れたツールですが、PHP プロジェクトの場合、HHVM の使用範囲は十分に広くなく、Facebook や Wikipedia などの特定のプロジェクトのニーズにしか満たせません。

PHP は厳密に型指定された言語ではないため、JIT にインポートするのはさらに困難です

しかし、PHP に JIT コンパイルを追加するのは非常に困難です。ラスムス・ラードルフ氏は、JITはどの部分が重要なプログラムコードであるかを理解し、プログラムがいつ呼び出されるか、またはプログラムが呼び出される前にプログラムのどの部分が呼び出されるかを予測するなど、プログラムの動作パターン(パターン)を特定することを学習する必要があると述べた。走る。

ラスムス・レルドルフ氏は、多くの車において、JIT は車のどの部分が右折するか、どの部分が左折するか、または特定の色の車が直進するかを予測できなければならない、と述べました。予測が正しければ、パフォーマンスが低下します。「大幅に低下します。」ただし、予測が正しければ、プログラムの実行パフォーマンスは大幅に向上します。

一般的なプログラミング言語のコンパイルに JIT を追加するのは簡単ではありません。Rasmus Lerdorf 氏は、PHP の動的な性質のため、JIT を追加するのはさらに難しいと述べました。たとえば、開発者はパラメータ $a の値を 1 と宣言しましたが、パラメータ値は PHP で簡単に再定義できるため、プログラム内のすべての $a の値が 1 であることを意味するわけではありません。 C 言語では、開発者がパラメータ a を整数として宣言すると、a は常に整数になります。プログラムのどこかで a が整数以外の型であると宣言されている場合、コンパイルすらできなくなります。また、C 言語は厳密に型指定されたプログラミング言語であるため、「JIT は変数 a が整数であることを予測できますが、PHP ではそのような余裕はありません。HHVM のアプローチは、JIT が a が整数であることを学習することであると説明しました。」 type 以降は、a は常に整数であると見なされます。

JIT コンパイルを使用するために、HHVM は PHP の開発をある程度制限しています。 HHVM のユーザーは変数の性質を明確に宣言する必要がありますが、PHP を使用する開発者は、最初に性質なしでカテゴリ (クラス) を宣言し、次にクラスの変数属性を指定できます。 「いかなる制限もなく、PHP に JIT を追加することが私たちがしなければならないことです。PHP は WordPress、Drupal、その他のフレームワークの開発者を考慮する必要があり、これらのフレームワークのサポートを恣意的に停止することはできません」と同氏は述べました。したがって、HHVM と比較して、PHP では JIT の作成に関する制限が増えます。

しかし、「これは、JIT ができないという意味ではありません。さらに、PHP の開発方向もコントロールする必要があります。」と Rasmus Lerdorf 氏は言いました。

現在、PHP の中心的な貢献者の 1 人である Dmitry Stogov は、プロトタイプの JIT を開発し、いくつかの実験的アプリケーションを使用してその動作をテストしています。 Rasmus Lerdorf 氏は、この JIT を特定の反復操作やループ プログラムの実行に使用すると、PHP 7 のパフォーマンスを 10 倍高速化できると述べました。

しかし、彼はまた、この実験的な JIT を WordPress で使用したとき、加速効果が得られなかったことも認めました。「私たちが作りたい JIT は、大学の教科書で習うものではなく、現実の世界で動作するものです。」ジット。」と彼は言いました。なぜなら、PHP は常にそのような理想を持ち、教科書上の理論だけでなく、人々の生活や現実世界のオンライン環境で問題を解決しようと努めてきたからです。

Rasmus Lerdorf 氏は、PHP が初めて登場したとき、PHP の開発に 1 日に少なくとも 16 時間を費やしたと述べました。しかし現在、彼は開発への投資を徐々に減らし、その代わりに世界中での宣伝や講演にエネルギーを注いでいます。彼は冗談めかして、「自分で開発するよりも、私よりはるかに賢くて、1 日 18 時間費やしてプログラムを書いて PHP を開発する人たちにインスピレーションを与えるほうが良い」と語った。彼が書いた PHP の 1 行のプログラミング コードは、「成長するプロジェクトは 1 人の開発者によって主導されるべきではありません。古いプログラム コードは新しいプログラム コードに置き換えられるべきであり、他の開発者がこれを目指すべきだと信じています。」

www.bkjia.com本当http://www.bkjia.com/PHPjc/1073123.html技術記事 PHP7 のパフォーマンスを 2 倍にする鍵を教えてください。 php7 のパフォーマンスを 2 倍にする鍵は、10 月末にもリリースされる予定の Web プログラミング言語です。 10年ぶりの大幅改訂 最大の特徴は...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPアプリケーションをより速くする方法PHPアプリケーションをより速くする方法May 12, 2025 am 12:12 AM

tomakephpapplicationsfaster、followthesesteps:1)useopcodecachinglikeopcacheTostoredscriptbytecode.2)最小化abasequeriesecachingingindexing.3)leveragephp7機能forbettercodeefficiency.4)

PHP依存性インジェクション:コードのテスト可能性を改善しますPHP依存性インジェクション:コードのテスト可能性を改善しますMay 12, 2025 am 12:03 AM

依存性注入(DI)は、明示的に推移的な依存関係によりPHPコードのテスト可能性を大幅に改善します。 1)DI分離クラスと特定の実装により、テストとメンテナンスが柔軟になります。 2)3つのタイプのうち、コンストラクターは、状態を一貫性に保つために明示的な式依存性を注入します。 3)DIコンテナを使用して複雑な依存関係を管理し、コードの品質と開発効率を向上させます。

PHPパフォーマンスの最適化:データベースクエリの最適化PHPパフォーマンスの最適化:データベースクエリの最適化May 12, 2025 am 12:02 AM

DatabaseQueryoptimizationInpholvesseveralstrategESTOEnhancePerformance.1)selectonlynlynlyndorycolumnStoredatedataTransfer.2)useindexingtospeedupdataretrieval.3)revenmecrycachingtostoreres sultsoffrequent queries.4)

簡単なガイド:PHPスクリプトで電子メールを送信します簡単なガイド:PHPスクリプトで電子メールを送信しますMay 12, 2025 am 12:02 AM

phpisusededemingemailsduetoitsbuilt-inmail()functionandsupportiveLibrarieslikephpmailerandswiftmailer.1)usethemail()functionforbasicemails、butithaslimitations.2)emploadforadvancedfeatureSlikelikelivableabableabuses.3)雇用

PHPパフォーマンス:ボトルネックの識別と修正PHPパフォーマンス:ボトルネックの識別と修正May 11, 2025 am 12:13 AM

PHPパフォーマンスボトルネックは、次の手順で解決できます。1)パフォーマンス分析にXdebugまたはBlackfireを使用して問題を見つける。 2)データベースクエリを最適化し、APCUなどのキャッシュを使用します。 3)array_filterなどの効率的な関数を使用して、配列操作を最適化します。 4)bytecodeキャッシュ用のopcacheを構成します。 5)HTTP要求の削減や写真の最適化など、フロントエンドを最適化します。 6)パフォーマンスを継続的に監視および最適化します。これらの方法により、PHPアプリケーションのパフォーマンスを大幅に改善できます。

PHPの依存関係注射:簡単な要約PHPの依存関係注射:簡単な要約May 11, 2025 am 12:09 AM

依存関係(di)inphpisadesignpatternativats anducesclassodulencies、拡張測定性、テスト可能性、および維持可能性。

PHPパフォーマンスの向上:キャッシュ戦略と技術PHPパフォーマンスの向上:キャッシュ戦略と技術May 11, 2025 am 12:08 AM

cachingemprovesppperformancebystring of computationsorquickretrieval、還元装置の削減は、reducingerloadendenhancersponseTimes.efcectivestrategiesInclude:1)opcodecaching、compiledphpscriptsinmemorytoskipcompilation;

See all articles

ホット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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター