C は Java よりも効率的ですか?それは 2 つの言語の初期の基礎設計が異なるためでしょうか?
返信内容:
効率とは開発効率でしょうか、それとも業務効率でしょうか?
運用効率に関することであれば、この文はまず前提条件を追加する必要があると思います: 複雑なフレームワークを使用する場合。この前提がなければこの文は成り立たないと思います。
PHP は最初から Web 開発用に設計されており、幅広いユーザーを対象としているため、簡単に始めることができ、実行環境の設計もシンプルで、ガベージ コレクションのメカニズムもシンプルになるように設計されています。ご存知のとおり、PHP スクリプトの完全なライフサイクルはリクエストから始まり、そのリクエストで終わります。これにより、グローバルな再利用メカニズムが利用できなくなります。たとえば、フロント コントローラー モード (フロント コントローラー) は現在多くの Web フレームワークで使用されていますが、PHP でこれを使用すると、リクエストごとに巨大なフレームワークを初期化するという問題が発生します。 。 Python では、Django のような大規模なフレームワークであっても、フレームワーク自体はプロセスを 1 回初期化するだけで済み、その後は複数のリクエストを処理できます。これは、フレームワークを使用した後、多くの PHP アプリケーションのパフォーマンスが Python アプリケーションよりも低下するためだと個人的には考えています。
C と Java を比較すると、PHP と Python の間にはそのような関係はないと思います。どちらもインタープリタ言語であり、どちらもバイトコードをキャッシュできます (PHP は APC を介して拡張し、共有メモリに保存する必要があります。Python はファイルが配置されているディレクトリを書き込み可能にして pyc ファイルとして保存する必要があります)。唯一の違いは Python の場合です。ガベージ コレクション メカニズムがより強力になっていますが、これは当然のことです。Python は PHP のような短いライフ サイクルの操作向けに設計されていないため、メモリが時間内に解放されないのは耐えられません。したがって、C と Java の関係を比較する必要がある場合、PHP は C に対応し、Python は Java に対応すると思います。これは、後者では、より複雑なガベージ コレクションのために追加のオーバーヘッドも必要となるためです。
さらに、いくつかの特殊な条件下では、PHP と Python で作成された Web アプリケーションのパフォーマンスの差が非常に大きくなります。たとえば、epoll を使用して非同期実装を実現する Tornado のようなフレームワークを使用すると、高い同時実行に耐え、低コストで長い接続を実現できます。これは、PHP がパッケージに近いためです。誰でも使用でき、よくパッケージ化されています。一連の操作 (組み込み関数など) は提供されますが、システム プログラミングの方法は提供されません。