キーポイント
この記事はNewRelicが後援しています。 SitePointを可能にしてくれたスポンサーへのご支援ありがとうございます! 記事の以前のバージョンは、phpngをJITコンパイラとして誤って説明しました。これは事実ではなく、必要な変更が完了しました。詳細については、記事の下部をご覧ください。
旧世界の混乱!数年前、まず第一に、Hiphop、誰もそれに注意を払いませんでした。その後、突然、HHVMが表示され、ハックが導入され、すべてが混乱しています-Facebookは新しいPHPを作成し、すべてを壊し/修正します(尋ねる人に応じて)。さらに、ZephirはすべてのPHPコードをCレベルでコンパイルすると脅し、現在のPHP拡張機能を完全にサポートしています(ZephirはCまたはPHPを置き換えることを意図していませんが、PHPのようなコードを作成してCにコンパイルすることを可能にします。すべてのPHPアプリケーションを簡単に書き換えて、閉じたソース用にコンパイルできる形式に簡単に書き換えて、より速く、より多くのセキュリティを実現できます。代替PHPランタイムの場合、これはキノコが成長する時期であり、HippyVMも登場します。マヌエル・レモスが紹介するように、PHPNGはPHPの新しいブランチであり、まだ決定されていないPHPの将来のバージョンに登場します。
待って、何?
名前は少し安っぽい(NG =新世代)、PHPの不器用なバージョンは、COREチームがPHPを大幅に最適化し、JITコンパイラを使用して将来のパフォーマンスの改善を可能にしようとする試みです。 PHPNG自体はJITコンパイラではなく、将来的に優れたJITコンパイラを構築するための基盤を築くアップグレードです。 PHPNGブランチ自体には、JIT機能が含まれていません。
Redditからの抜粋:
ngは、主にすべてを常に割り当てているために、エンジンの現在の設計のために、実世界でzendが実行されたときに実行された実験zendが実世界で失敗したために存在します。 NGパッチが仕様を変更したため、デフォルトでZVALを割り当てなくなり、パフォーマンスが向上し、クリーナーAPIが可能になります。
「PHPの改善」の試みと同様に、この試みには長所と短所があります。
実行により、リソースの割り当てが高速で、リクエスト処理が高速で、スループットが大きくなります。予備的な結果は勇気づけられています(1、2)。
パフォーマンスは、他の選択肢に対してベンチマークする必要がありますが、10〜30%の改善は過小評価できません。
したがって、拡張された互換性を保証します…など。うん?なんてこった。
短所
すべての拡張機能がサポートされているわけではなく、一部のテストが失敗し、改善のためのアイデアが増えています。公平を期すために、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のコアエンジンになったと考えていると言われています。結論
競争は素晴らしいです。これが私たちをもたらすところならどこでもそれについて楽観的に感じています。
フィルスタージョンとのメールを受け取り、公式声明を読んだ後、上記のテキストのいくつかを編集しました。要するに、PHPNGをJITに分類しますが、これは明らかにそうではありませんが、パフォーマンスのアップグレードだけであるため、コアチームは後で適切なJITコンパイラを開発できます。
PHPとZephirはどちらもWeb開発のためのスクリプト言語です。 PHPは広く使用されているオープンソース言語ですが、Zephirは開発者がPHPの拡張機能を作成できる高レベルの言語です。 Zephirは静的なタイプ化された構文を提供します。これは、PHPの可能性のあるエラーを防ぐのに役立ちます。ただし、PHPにはコミュニティが大きく、より多くのリソースがあり、開発者にとって有益です。
HHVM(HIPHOP仮想マシン)とPHPNG(PHP New Generation)はどちらもPHPコードを実行するためのエンジンです。 HHVMはFacebookによって開発されており、インスタント(JIT)コンピレーション方法を使用して優れたパフォーマンスを実現しています。一方、PHPNGは、PHPアプリケーションのパフォーマンスを改善することを目的としたPHPの内部プロジェクトです。これは、PHPが内部的に値とオブジェクトを表す方法を変更することでこれを行い、その結果、メモリの使用量が大幅に改善されます。
Zephirは、最近の更新に従って積極的に維持されなくなりました。つまり、言語はまだ利用可能ですが、発生する可能性のある潜在的な問題に対する更新または修正がない場合があります。
Zephirは開発者に多くの利点を提供します。静的なタイプ付き構文を提供し、エラーを防ぐのに役立ちます。また、開発者はPHPの拡張機能を作成できるため、PHPアプリケーションのパフォーマンスを改善する方法を提供できます。
Zephirを作成する目的は、開発者がPHPの拡張機能を作成できるようにする高レベルの言語を提供することです。目標は、開発者が最適化と管理が容易な言語で重要なコードパーツを作成できるようにすることにより、PHPアプリケーションのパフォーマンスを改善することです。
PHPNGは、PHPが内部的に値とオブジェクトを表す方法を変更することにより、PHPアプリケーションのパフォーマンスを向上させます。これにより、メモリの使用が大幅に改善され、PHPアプリケーションの実行時間が短縮される可能性があります。
HHVMとZephirの出現にもかかわらず、PHPは依然として広く使用されているWeb開発言語です。 HHVMとZephirはパフォーマンスの改善を提供しますが、PHPには膨大なコミュニティと豊富なリソースがあります。 PHPの将来は有望に見え、そのパフォーマンスと能力を改善するために常に取り組んでいます。
はい、ゼフィルの主な利点の1つは、開発者がPHPの拡張機能を作成できることです。これは、PHPアプリケーションのパフォーマンスを改善する方法かもしれません。
スクリプト言語は、人間のオペレーターによって段階的に段階的に実行されるタスクを自動化するために使用されるプログラミング言語です。一方、高レベルの言語は、コンピューターの詳細を強く抽象化するプログラミング言語であり、読み書きが容易になります。
HHVMのインスタント(JIT)コンピレーション方法により、実行前にByteCodeをマシンコードにコンパイルすることにより、パフォーマンスが向上します。これにより、最適化が可能になり、PHPアプリケーションの実行速度を大幅に向上させることができます。
以上がPHPはPHPNGとHHVMとゼフィルと戦いますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。