


開発コストを考慮すると、スクリプト言語は避けられないトレンドです。ここでの問題は、Java の JIT コンパイラなど、インタープリタ言語をコンパイル言語に変換するコンバータですが、Facebook が最近オープンソース化した JIT PHP コンパイラと仮想マシンがこの可能性を提供できると思いますか。
返信内容:
HHVM は、JIT コンパイルおよびその他のテクノロジを使用して PHP コードの実行パフォーマンスを大幅に向上させるオープン ソースの PHP 仮想マシンです。現在のバージョンのネイティブ PHP コードの実行パフォーマンスは 5 ~ 10 倍向上する可能性があると噂されています。HHVM は Facebook から生まれました。Facebook の初期のコードの多くは PHP を使用して開発されました。しかし、ビジネスの急速な発展に伴い、PHP の実行効率がますます明らかな問題になってきました。実行効率を最適化するために、Facebook は 2008 年に PHP 実行エンジンである HipHop の使用を開始しました。これは元々、Facebook の大量の PHP コードを C++ に変換してパフォーマンスを向上させ、リソースを節約するために設計されました。 HipHop を使用した PHP コードのパフォーマンスは数倍向上しました。その後、Facebook は HipHop プラットフォームをオープンソース化し、徐々に現在の HHVM に発展させました。
HHVM が PHP の実行パフォーマンスを向上させる方法
HHVM が PHP のパフォーマンスを向上させる方法は、Zend エンジンを置き換えて PHP 中間ワードを生成および実行することです。 セクション コード ( HHVM は、独自の形式で中間バイトコードを生成します)。これは、JIT (Just In Time、ジャストインタイム コンパイルはソフトウェア最適化テクノロジであり、実行時にバイトコードがマシン コードにコンパイルされることを意味します) を通じてマシン コードに変換されます。実行。 Zend エンジンのデフォルトのアプローチでは、まずオペコードにコンパイルし、次にそれを 1 つずつ実行します。通常、各命令は C 言語レベルの関数に対応します。多数の繰り返しオペコード (純粋な PHP で書かれたコードと関数) を生成すると、Zend はこれらの C コードを 1 つずつ複数回実行します。 JIT が行うことは、さらに一歩進んで、実行効率を向上させるために、繰り返し実行される多数のバイトコードを実行時にマシンコードにコンパイルすることです。通常、JIT がトリガーされる条件は、コードまたは関数が複数回呼び出される場合です。

通常の PHP コードでは、変数の型を固定できないため、型を決定するためのロジック コードを追加する必要があります。このような PHP コードCPU の実行に影響を与えず、最適化されています。したがって、HHVM は通常、変数の型を固定して仮想マシンのコンパイルと実行を容易にするために、Hack 記述メソッド (特定の機能と互換性を持たせるために追加された追加の技術コード) を備えた PHP コードを使用して「連携」する必要があります。 PHP はすべての型を 1 つの形式で収容することを追求しますが、Hack は収容されるすべてのものを特定の型でマークできます。
PHP コードのハック記述の例:

上記の例では、PHP コードは次のとおりです。主に使用される変数の型を追加しました。 Hack ライティングの全体的な方向性は、これまでの「動的」な書き込み方法を、HHVM と連携する「静的」な書き込み方法に変更することです。
HHVM はそのパフォーマンスの高さから大きな注目を集めており、一部の一流インターネット企業も追随し始めています。純粋な言語の実行パフォーマンス テストの結果から判断すると、HHVM は開発中の PHP7 バージョンよりもはるかに優れています。

ただし、特定のビジネス シナリオの観点から見ると、WordPress オープンソース ブログの結果では、HHVM と PHP7 の間のギャップはそれほど大きくありません。ホームページはテスト シナリオとして使用されますが、現在のギャップは明らかではありません。

ただし、利用可能な技術ソリューションから判断すると、現在の HHVM の方がわずかに優れています。ただし、HHVM の展開とアプリケーションにはいくつかの問題があります。
- サービスの展開は複雑で、一定のメンテナンス費用がかかります。
- PHP ネイティブ コードは完全にはサポートされていないため、PHP 拡張機能も適切に互換性がある必要があります。
- HHVM は新しい仮想マシンであるため、長時間実行するとメモリ リークが発生する可能性があります。 (一流のインターネット企業がこの技術を適用する場合、自社でパッチを当てることでメモリリークを解決していると言われています)
私は以前に 2 つのコミュニティから人気のある科学記事をまとめました:
PHP7 と HHVM 間のパフォーマンスの戦いの紹介 ドライ。人々はコードをオープンソース化していますが、これは可能だと思いますか? インタプリタ言語やコンパイル言語は存在しません。
解釈またはコンパイルは、言語を実装する方法です。 JS と PHP の開発コストは安い、へーとしか言いようがありません
開発コストを削減するには、言語は要素の 1 つにすぎません。JS と PHP の実践では、これが重要です。は依然として重要度の低い要素の 1 つです。
静的型付け言語が迅速なデプロイメントに適していないというのは単なる固定概念であり、その理由は、特に WebForm モデルの破綻後、効果的な迅速なデプロイメント実践モデルが欠如しているためです。
軽量で柔軟な開発モデルやフレームワークと組み合わせる場合、JS と PHP には明らかな利点はありません。 スクリプト言語とは一体何でしょうか?質問のリストは非常に長いですが、概念の定義はすべて混乱しています。 JIT は通常、最適化手段の 1 つとして、バイトコードの「一部」をマシン コード キャッシュに変換することで、従来のキャッシュされたバイトコード (Zend の一部のキャッシュ拡張機能など) と比較して大幅に改善できます。一部のステートメントでは、JIT によってパフォーマンスが低下するため、この観点から、一部のステートメントは依然としてインタープリターまたは VM 実行エンジンを直接経由する必要があります。高性能のサーバーを作成する場合は、パフォーマンスが圧迫されるため、間違いなく C/C++ を選択します。単一のマシンのパフォーマンスは非常にエキサイティングです ~ そして、パフォーマンスに関して言えば、スクリプト言語は通常、C/C++ と組み合わせて拡張機能を作成します ~
したがって、傾向や傾向はなく、適合性が重要です。 ハック言語。あなたはそれに値する あなたはナンセンスなことを話しています! !中国人のクソ野郎はどこにでもいるし、少額のお金を出せば安価で大量の中国人を雇うことができる…(逃げろ)

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

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

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。
