同じ作業を実行するために FastCGI C++ を使用する場合と PHP/Python/Perl を使用する場合の長所と短所は何ですか。
パフォーマンスや設計上の落とし穴はありますか? あるいは、どちらか一方を使用する方が良いでしょうか? ご意見も歓迎します。(どちらか一方が優れている理由、またはどちらか一方が劣っている理由を教えてください)。
ベストアンサー1
スクリプト言語は C よりも遅いかもしれませんが、これは問題でしょうか? ほとんど問題にはなりません。パフォーマンスが問題になる場合は、重要な部分のみを翻訳し始めます。
twitter/ruby は良い例です。Ruby は遅いです。一部の言語機能 (そもそも Ruby を優れたものにしている機能) は、さまざまな種類の最適化を妨げます (これについては、jruby の人が書いた素晴らしい記事があります... ola bini だったかな? 思い出せません)。
それでも、TwitterはRubyで動いています。Rubyは十分に速い少し前に、「ブログ」で、Twitter がパフォーマンス上の理由から Scala に移行すると報じられましたが、実際には、メッセージ キュー (およびバックエンドの他の部分) のみが Scala に移行されました。Yahoo は複数の言語を組み合わせて実行されています。フロントエンドには PHP が使用され、パフォーマンスが重要な場所では他のより高速な言語が使用されています。
では、なぜパフォーマンスはそれほど重要ではないのでしょうか? 理由はいくつかあります。
- データベースのボトルネック: スクリプトが遅いのではなく、データベースが遅いのです
- クライアント側のボトルネック: ブラウザでのレンダリングはリクエストよりも時間がかかります。サーバー側を最適化すれば、誰も気付かないでしょう。
- 水平スケーリング: アプリを最適化するよりも、別のサーバーを追加してリクエスト/秒を3倍にする方が安価になることが多い
- 開発者の時間とメンテナンスは、プロジェクトで最もコストがかかる部分です。Web 対応の C コーダーよりも、アプリをメンテナンスする安価な Python 開発者を短時間で獲得できます。
- コンパイル不要、開発サイクルが短い
もう一つのスクリプトの利点: 多くのスクリプト言語は、インライン化または高速な (C) コードの組み込みをサポートしています。
- Python、インライン c
- PHP: C の拡張機能
- Rhino 経由のサーバーサイド JavaScript: Java/JVM への直接アクセス(良い例としては、オーストリア最大のウェブサイトの1つであるorf.atが挙げられます。ヘルマ- サーバーサイド JVM 解釈 JavaScript!)
特に Web 開発においては、高レベル スクリプトの利点は欠点をはるかに上回ると思います。