ホームページ > バックエンド開発 > PHPチュートリアル > PHPはPHPNGとHHVMとゼフィルと戦います

PHPはPHPNGとHHVMとゼフィルと戦います

William Shakespeare
リリース: 2025-02-21 11:44:10
オリジナル
803 人が閲覧しました

PHP Fights HHVM and Zephir with PHPNG

キーポイント

    PHPの新しいブランチであるPHPNGが開発中であり、PHPを大幅に最適化し、JITコンパイラの将来の使用におけるさらなるパフォーマンスの改善を可能にすることを目指しています。これはJITコンパイラ自体ではなく、将来的に優れたJITコンパイラを構築するための基盤を築くアップグレードです。
  • ngアップグレードは、PHPデータ型へのメモリ割り当てを改善するために、Zendエンジンのコアパーツの書き換えに焦点を当てています。これにより、パフォーマンスが向上し、よりクリーンなAPIが可能になると予想されます。
  • PHPNGは既存の拡張機能との互換性を約束していますが、すべての拡張機能がサポートされているわけではなく、一部のテストが失敗しました。これらの互換性の問題は、アップグレード時に共有ホスティングプロバイダーに課題をもたらす可能性があります。
  • PHPコア開発チームの変化の遅い適応は、PHPNGの実装がパフォーマンスのアップグレードのみを提供し、ハックとHHVMと競合できないことを意味する場合があります。

この記事はNewRelicが後援しています。 SitePointを可能にしてくれたスポンサーへのご支援ありがとうございます! 記事の以前のバージョンは、phpngをJITコンパイラとして誤って説明しました。これは事実ではなく、必要な変更が完了しました。詳細については、記事の下部をご覧ください。

旧世界の混乱!数年前、まず第一に、Hiphop、誰もそれに注意を払いませんでした。その後、突然、HHVMが表示され、ハックが導入され、すべてが混乱しています-Facebookは新しいPHPを作成し、すべてを壊し/修正します(尋ねる人に応じて)。さらに、ZephirはすべてのPHPコードをCレベルでコンパイルすると脅し、現在のPHP拡張機能を完全にサポートしています(ZephirはCまたはPHPを置き換えることを意図していませんが、PHPのようなコードを作成してCにコンパイルすることを可能にします。すべてのPHPアプリケーションを簡単に書き換えて、閉じたソース用にコンパイルできる形式に簡単に書き換えて、より速く、より多くのセキュリティを実現できます。代替PHPランタイムの場合、これはキノコが成長する時期であり、HippyVMも登場します。
この一連の変化では、別の新しい声が出現しました:phpng。

マヌエル・レモスが紹介するように、PHPNGはPHPの新しいブランチであり、まだ決定されていないPHPの将来のバージョンに登場します。

待って、何?

名前は少し安っぽい(NG =新世代)、PHPの不器用なバージョンは、COREチームがPHPを大幅に最適化し、JITコンパイラを使用して将来のパフォーマンスの改善を可能にしようとする試みです。 PHPNG自体はJITコンパイラではなく、将来的に優れたJITコンパイラを構築するための基盤を築くアップグレードです。 PHPNGブランチ自体には、JIT機能が含まれていません。

phpngは、Dmitry Stogovによって内部ニュースグループトピックで提示されました。 Dmitryは、主にZendエンジンを扱うZendのパフォーマンスと最適化を担当しています。 NGアップグレードは、Zendエンジンのコアパーツの書き換えに焦点を当て、PHPデータ型へのメモリ割り当てを改善します。

Redditからの抜粋:

ngは、主にすべてを常に割り当てているために、エンジンの現在の設計のために、実世界でzendが実行されたときに実行された実験zendが実世界で失敗したために存在します。 NGパッチが仕様を変更したため、デフォルトでZVALを割り当てなくなり、パフォーマンスが向上し、クリーナーAPIが可能になります。

「PHPの改善」の試みと同様に、この試みには長所と短所があります。

pro

速度!

実行により、リソースの割り当てが高速で、リクエスト処理が高速で、スループットが大きくなります。予備的な結果は勇気づけられています(1、2)。

パフォーマンスは、他の選択肢に対してベンチマークする必要がありますが、10〜30%の改善は過小評価できません。

展開!

このアップグレードは、ランタイムではなく公式のZendエンジンで行われるため、現在の拡張機能との互換性をほぼ保証します。人々がHHVMに移住することをためらう最大の理由の1つは、使用に慣れている基本的な拡張機能が利用できないことです(私の場合はPhalcon)。個人的には、Phalconをサポートするより速いPHPエンジンは、今日のハックオファーのアップグレードについてあまり心配しません。

したがって、拡張された互換性を保証します…など。うん?なんてこった。

短所

展開!

信じられないほど良い。

すべての拡張機能がサポートされているわけではなく、一部のテストが失敗し、改善のためのアイデアが増えています。

公平を期すために、ngはまだ非常に若いです。私たちがPHPの世界で扱った何よりもはるかに若く、より大きなアップデートのようなものです。したがって、いくつかの互換性の問題は避けられません。しかし、私はマヌエルに、アップグレード時間が来ると、これはほとんどの共有ホスティングプロバイダーにとって問題のポイントになる可能性があることに同意します。

私は共有ホスティングプロバイダーにかなり反対していますが、これがもたらす可能性のある問題を完全に理解しています。プロバイダーに「PHP5の使用」を獲得しようとしたとき、私たちは両方とも同様の混乱を抱えており、最新のPHPを使用する必要があるため、BCの混乱をもたらす可能性のある大きなシフトを作成することは困難な作業です。

この変化への恐怖は、PHPの古いバージョンの使用を固め、それが時代遅れのコードに取り組んでいるより非常に資格のないPHP開発者を繁殖させ、ベストプラクティスと脆弱性を完全に無視します。要するに、私たちは歴史を繰り返します。一部の人が指摘しているように、それは世界の終わりのように聞こえるかもしれませんが、私は毎日PHPのすべてのエリアに深く関わっており、完全な受信トレイで最も低品質のエリアに到達します。どこに行くか。ただし、すべてが暗いわけではありません。HerokuやDigitaloceanなどのソリューションにより、人々は共有ホスティングプロバイダーよりも少ない(または等しい)価格でPHPの最新バージョンを実行できます。

私の心からの希望は、コアチームがすべての拡張機能との逆互換性のあるレベルに新しいZendエンジンを完成させることができるが、NG仕様とベストプラクティスに準拠していないすべての拡張開発者にコンピレーション警告を発行できることです。

内部的に遅い

コア開発チームは、変化を遅くするために適応することで有名です。他の言語に長年にわたって存在していた最新の特徴は、過去に拒否され、数年後まで実装されていませんでした。

これがコア開発チームのビジョンの欠如によるものであるかどうか、アンソニーとフィルの投稿が言うように、または大きすぎて資金不足のために大きな変更を迅速に行うには問題ありません。神秘的なPHP6の場合のように、公共の場でNGを見ることができず、「アルファ」状態を取り除くことはできません。

これは、最後のポイントを思い出させます。

再び後ろに横たわっている

PHPコア開発チームでよく見られる固有の遅延により、NGが実装された場合にのみパフォーマンスのアップグレードが提供されます(実際に実装されている場合)。それまでに、HackとHHVM(標準のPHPよりもはるかに多く)は、一致するものが操作され、PHPが勝つ可能性がない非常に多くの追加機能を提供します。

今日のハックで利用可能なタイプのプロンプトとゼフィルは、これらの実装に根付いています。マルチスレッド、コンパイルされたスタンドアロンWebサーバー - これらの機能はすべて、今日の代替ソリューションで利用可能であり、ほとんどすべてが生産に進む準備ができています。コア開発チームはこれらの機能のいくつかに取り組んでおり、PHPはHHVMの前にIISサポートを持っている可能性がありますが(これは明らかに一部の人にとって重要です)、私はこれがPHPの進捗状況の公式側にとって十分に速くないと考えています。

コアチームが問題とニーズを持つこれらすべての特別な機能に「はい」に投票することを決定したとしても、実装するのに時間がかかりすぎます。彼らの全体が働く方法を変更します。ソースコードをGitHubに移動するのは良い動きですが、表面に触れるだけです。

言い換えれば、ラスマス自身は、HHVMが数年でPHPのコアエンジンになったと考えていると言われています。

結論

Facebook関連の所有権(それ自体が多くのマイナスの意味を持つ)を残して、HHVMはそのようなアップグレードをどのように行うことができるかを示すことにより、開発者を正しい方向にプッシュします。これにより、革新を促進し、長い間王位に満足している人々に立ち上がって足を伸ばして、まだ走ることができるかどうかを確認します。 Facebookの攻撃性により、PHPの世界は何が起こっているのかを再訪して考えさせ、すぐに人気が高まりました。

競争は素晴らしいです。これが私たちをもたらすところならどこでもそれについて楽観的に感じています。

2014年5月28日の記事更新

フィルスタージョンとのメールを受け取り、公式声明を読んだ後、上記のテキストのいくつかを編集しました。要するに、PHPNGをJITに分類しますが、これは明らかにそうではありませんが、パフォーマンスのアップグレードだけであるため、コアチームは後で適切なJITコンパイラを開発できます。

PHP、HHVM、Zephir、およびPHPNG

に関するよくある質問

PHPとZephirの主な違いは何ですか?

PHPとZephirはどちらもWeb開発のためのスクリプト言語です。 PHPは広く使用されているオープンソース言語ですが、Zephirは開発者がPHPの拡張機能を作成できる高レベルの言語です。 Zephirは静的なタイプ化された構文を提供します。これは、PHPの可能性のあるエラーを防ぐのに役立ちます。ただし、PHPにはコミュニティが大きく、より多くのリソースがあり、開発者にとって有益です。

HHVMとPHPNGを比較する方法は?

HHVM(HIPHOP仮想マシン)とPHPNG(PHP New Generation)はどちらもPHPコードを実行するためのエンジンです。 HHVMはFacebookによって開発されており、インスタント(JIT)コンピレーション方法を使用して優れたパフォーマンスを実現しています。一方、PHPNGは、PHPアプリケーションのパフォーマンスを改善することを目的としたPHPの内部プロジェクトです。これは、PHPが内部的に値とオブジェクトを表す方法を変更することでこれを行い、その結果、メモリの使用量が大幅に改善されます。

ゼフィルはまだメンテナンスを受けていますか?

Zephirは、最近の更新に従って積極的に維持されなくなりました。つまり、言語はまだ利用可能ですが、発生する可能性のある潜在的な問題に対する更新または修正がない場合があります。

ゼフィルを使用することの利点は何ですか?

Zephirは開発者に多くの利点を提供します。静的なタイプ付き構文を提供し、エラーを防ぐのに役立ちます。また、開発者はPHPの拡張機能を作成できるため、PHPアプリケーションのパフォーマンスを改善する方法を提供できます。

なぜゼフィルを作成するのですか?

Zephirを作成する目的は、開発者がPHPの拡張機能を作成できるようにする高レベルの言語を提供することです。目標は、開発者が最適化と管理が容易な言語で重要なコードパーツを作成できるようにすることにより、PHPアプリケーションのパフォーマンスを改善することです。

PHPNGはPHPアプリケーションのパフォーマンスをどのように改善しますか?

PHPNGは、PHPが内部的に値とオブジェクトを表す方法を変更することにより、PHPアプリケーションのパフォーマンスを向上させます。これにより、メモリの使用が大幅に改善され、PHPアプリケーションの実行時間が短縮される可能性があります。

HHVMとZephirの出現により、PHPの未来は何ですか?

HHVMとZephirの出現にもかかわらず、PHPは依然として広く使用されているWeb開発言語です。 HHVMとZephirはパフォーマンスの改善を提供しますが、PHPには膨大なコミュニティと豊富なリソースがあります。 PHPの将来は有望に見え、そのパフォーマンスと能力を改善するために常に取り組んでいます。

Zephirを使用してPHP拡張機能を記述できますか?

はい、ゼフィルの主な利点の1つは、開発者がPHPの拡張機能を作成できることです。これは、PHPアプリケーションのパフォーマンスを改善する方法かもしれません。

スクリプト言語と高レベルの言語の違いは何ですか?

スクリプト言語は、人間のオペレーターによって段階的に段階的に実行されるタスクを自動化するために使用されるプログラミング言語です。一方、高レベルの言語は、コンピューターの詳細を強く抽象化するプログラミング言語であり、読み書きが容易になります。

HHVMのインスタント(JIT)コンパイル方法はパフォーマンスをどのように改善しますか?

HHVMのインスタント(JIT)コンピレーション方法により、実行前にByteCodeをマシンコードにコンパイルすることにより、パフォーマンスが向上します。これにより、最適化が可能になり、PHPアプリケーションの実行速度を大幅に向上させることができます。

以上がPHPはPHPNGとHHVMとゼフィルと戦いますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート