私が取り組んでいるプロジェクトでは、主な開発言語は PHP です。必要に応じて、または PHP の欠点を補うために、PHP 用のさまざまな拡張機能を作成する必要があります。たとえば、PHP 自体はスレッド、キューをサポートしていません。 PHP には「プロセス」が存在しないとも言えるため、PHP のキューやマルチスレッドなどの実装方法を説明した記事がインターネット上に多数あります。理解すると、堅牢性を保証できないこの機能を実装するために PHP 自体を使用するのではなく、統合され、適切に実行されるいくつかの言語を検討して使用する方がよいでしょう。
Weibo で golang 言語について知りました。golang の構文は C と Python に似ています。この 2 つの言語の経験がある学生はよりスムーズに始めることができます。 golang 言語のメリットはここにありますが、一つずつ説明するのは省略します。 !
しばらく勉強した結果、たまたま保守業務がボトルネックになり、また私が保守していた業務はインターフェース層に属していたため、ロジックが比較的単純でjsonデータのみを出力するものであったため、 golang を使用して既存のシステムを再構築します。変換は進行中です。一部の同僚は golang に懐疑的であり、オンラインのパフォーマンス比較のほとんどは単なる hello word 出力であり、参照する意味はほとんどないため、2 台のオンライン イントラネット マシンを使用して、 PHP と golang の正式なビジネス パフォーマンスの比較
サーバー構成: 16 コア E5620 @ 2.40GHz 11G メモリ
業務内容: DB (oracle) と redis クエリ。キャッシュがある場合、DB はクエリを実行しなくなります。そして redis を直接読み取り、バッチで 2 つの主キーをクエリします
Apache の ab テストを使用して 200、20,000 のリクエストを同時にテストします
golang の同時実行テスト
Golang の qps について9675/s、最高は約 10200/s、CPU 使用率 ピーク レートは約 10.6% Golang はマルチコアを有効にし、40 の Redis 接続プールを維持しました
上記の php リンクは、php プロジェクトとの互換性を保つために golang の URL を書き換えたものです。誤解しないでください。
PHP 同時実行テスト
PHP の QPS は約 1726/s で、最高です。 golang の処理能力は約 2100/s、CPU ピークは 50.1% で、これは非常に恐ろしいです
さらに、より多くの主キーに対するバッチ クエリもテストしました。
golang の同時実行数が 2500 に増加した後も、そのパフォーマンスが依然として優れていることに驚きました。疑問がある場合は、自分でテストしてください。
上記のテスト結果から導き出された結論は、マルチコアの利用、golang の「マルチスレッド」、および redis によるものです。接続プールを作成すると、PHP との同時実行性の比較ではるかに優れており、処理能力は PHP の約 4 倍です。
そのため、大量のリクエストを維持してボトルネックに遭遇することをお勧めします。 golang を使用して改善してみてください!
以上がgo が php よりもパフォーマンスが高いのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。