7

私はデータベース駆動型のWebサイトを構築しています。以前は、MySQLでPerlまたはPHPを使用していました。

今、私は大きな新しいプロジェクトを開始しています。可能な限り最も応答性の高いサイトになるような方法でそれを実行したいと思います。

PHPを最適化する方法についての質問が、「PHPはインタプリタ言語であり、それほど大きな違いはないので、PHPを最適化するために長い時間を費やす価値はない」という質問が、ここでいくつか見られます。

また、コンパイル言語とインタプリタ言語の利点についてさまざまな議論(特にSOポッドキャストで)を聞いたことがありますが、インタプリタ言語の代わりにコンパイル言語を使用してサイトを提供することは私の利益になるようです。

これはWebコンテキストでも可能ですか?もしそうなら、合理的な言語の選択は何でしょうか?

速度に加えて、私が予想する1つの利点は、Webサイトをデバッグする代わりに、コンパイル時にバグを見つけることができることです。これは期待するのに合理的ですか?

4

7 に答える 7

7

あなたができることは、複数のトラフィックの多い Web サイト (Facebook や Twitter など) が行うことです。別名、C プラグインで「CPU を消費する」アルゴリズムを記述します。

たとえば、 PHPを使用する予定がある場合はPHP 拡張機能を作成し、Ruby / Ruby on Rails などを使用する予定がある場合はRuby 拡張機能を作成できます。

そうすれば、合理化されたコードをシンプルで保守しやすい状態に保つことができます (PHP からではなく C からの要求を処理する方がはるかに難しいかもしれません) 一方で、強力で堅実なバックグラウンド コアを持ちます (コンパイルされており、コンパイラが何を教えてくれるからです)。問題はコンパイル時です)

于 2009-10-07T17:35:46.093 に答える
4

あなたが新しい言語を構築しようとしている場合...そしてすべてのセマンティクスを思いつき、それが完成し、言語をコンパイルするか解釈するかを切り替える魔法の箱があれば、コンパイルされたバージョンの方が高速です解釈されたバージョンより。

なんで?コンパイルはマシン上でセマンティクスをより低いレベルに下げるため、より高速に実行できることを意味しますが、インタープリターとは、ユーザーが実際にサイトを使用するときに、言語のセマンティクスが何らかのもの(つまり、インタープリター)によって翻訳されることを意味します。

そうは言っても...それは必ずしもあなたのサイトがコンパイルされた言語と解釈された言語で100%速く実行されることを意味するわけではありません. 現在、さまざまな言語 (PHP など) に対して非常に高速なインタープリターがあり、さらに高速化するインタープリター言語用のオプティマイザーさえあります。

選択した言語に関係なく、サイトのパフォーマンスに影響を与える要素は他にもたくさんあります。ハードウェアのセットアップ、データベースのセットアップ、ネットワーク トポロジなど。これらのことは、より大きな影響を与える可能性があります。確実に測定することをお勧めします。

私にとって、コンパイル時にバグを見つけることは時間を大幅に節約するので、強く型付けされたコンパイル済み言語を好む傾向があります。仕事をより速く終わらせることができますが、それが客観的に最良の選択肢になるわけではありません. 一部の人々は、弱く型付けされたコードを書いたり、テスト スイートを実行してその機能を検証したりすることに問題はありません。

于 2009-10-07T17:33:38.607 に答える
0

ネットワークの遅延は、この議論の最大の決定要因です。実際、ネットワーク遅延は非常に多くの要因であるため、パフォーマンスの問題から言語の考慮事項はそれほど重要ではありません。だから...あなたが知っていることで行きなさい。あなたが最も快適で生産性の高い言語を使用してください。他の考慮事項は、あなたが進むにつれて解決することができます。そうは言っても、新しいことを試すのはいつも楽しいし、新しいことを学ぶことは執着になる可能性があるので、プロジェクトが個人的なものであれば、ぜひ実験する機会があります。

于 2010-04-02T21:20:10.983 に答える
0

Perl はインタープリター言語ではありません: バイトコードにコンパイルされるため、perl 実行可能ファイルが開始されたときにのみインタープリターの代償を払います。そのため、Apache で使用する場合は、CGI ではなく mod_perl を使用してください。

何をするにしても、Web プログラミングに適していない言語を選択したり、必要なことをサポートするための適切なライブラリがない言語を選択したりすると、開発時間はおそらく応答時間を大幅に超えることになります。たとえば、私は C や C++ を決して選びません。猛烈に高速だがバグが多く、6 か月遅れている Web アプリは必要ありません。

于 2009-10-07T17:34:12.880 に答える
0

Tomcatは、コンパイル済み言語を使用して Web ページを展開する一般的な方法ですが、行き過ぎる前に、速度のボトルネックが何であるかを真剣に検討してください。Web アプリケーションの速度低下の主な原因はいくつかあります。

  1. ネットワーク遅延
  2. 静的メディア、特に画像
  3. データベース クエリ
  4. サーバー側の処理コード
  5. クライアント側の処理コード

1 と 5 は、この質問とはあまり関係がありません。

2 は、ページごとに異なる画像が多数ある場合に適しています。その場合、クライアント ブラウザは適切なキャッシングを行わず、各ページの読み込みに時間がかかります。この場合、静的メディアからのオーバーヘッドが支配的であるため、サーバー側の言語が認識されない可能性が非常に高くなります。

多くのアプリケーションでは、3 が 4 よりも大きな要因になる可能性があります。データが非常に少ないが、大量の処理を行う場合は、4 が優勢になる可能性がありますが、それ以外の場合は、インタープリター言語を使用していても 3 が優勢になります。

人々は「なぜphpを最適化するのですか?」と尋ねることができます。いずれにしても、2 と 3 の方が重要な場合が多いためです。多くの場合、優れたデータベース キャッシング フレームワークは、より優れた (そしてより簡単な) 最適化になります。

于 2009-10-07T17:47:12.777 に答える
0

Web アプリケーションに入る部分はたくさんあります。アプリケーション層にかかる時間は、大きくする必要はありません。典型的なアプリケーションの場合、最大の負担は Web サーバーとデータベースにあります。PHP をバイナリ cgi に置き換えても、これは変わりません。

さらに、PHP の解釈された部分は多少遅いかもしれませんが、それは PHP スクリプトの実行で行われることのほんの一部にすぎません。言語の一部として提供されるすべての機能は、ネイティブ コードで実装されます。たとえば、 のような関数をpreg_match呼び出すと、ネイティブ コード ライブラリが呼び出され、その機能が実行されます。これは、あなたが思っているよりも実際の解釈が少ないことを意味します。

PHP 以外の言語を使用する価値がある場合もありますが、それらは特殊なケースです。一般に、ここで得られるものは何もありません。

于 2009-10-07T17:47:15.803 に答える
0

私見ですが、コンパイルされた言語を使用して複雑な Web アプリを作成することはまったく無意味です。

スクリプト言語のパフォーマンスとスケーラビリティを言語レベルとシステム レベルの両方で向上させる方法はたくさんありますが、最終的には完全に影響力のあるコンパイル済み言語で利用できるわずかなパフォーマンスの向上です。

一方で、コードを変更して結果を確認するだけで、アジャイル開発とバグ ハンティング スキーマを実行できることは非常に便利だと思います。

于 2009-10-07T17:32:32.913 に答える