質問

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

今、私は大きな新しいプロジェクトを始めていますが、結果として、 可能な限り最も応答性の高いサイト.

ここで、PHP を最適化する方法に関する質問がさまざまなバージョンで批判されているページをいくつか見てきました。「PHP はインタープリタ型言語であり、それほど大きな違いは生じないため、最適化に多大な労力を費やす価値はありません。」

また、次の利点についてさまざまな議論 (特に SO ポッドキャストで) を聞いてきました。 コンパイル済み vs.通訳された言語, 、そして、インタープリター言語の代わりにコンパイル言語を使用してサイトを提供することが私の利益になるように思えます。

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

速度に加えて、私が予想する利点の 1 つは、次の可能性です。 コンパイル時にバグを見つける Web サイトをデバッグする必要がなくなります。これは期待するのが妥当でしょうか?

役に立ちましたか?

解決

複数の重トラフィックのウェブサイトは、(FacebookやTwitterのように)何をすべきかであるあなたが何ができるか、別名C-プラグインで、あなたの「CPU消費する」algorythmを書きます。

は、たとえば、のPHP拡張モジュールを記述する可能性がのあなたは、PHP、または使用する予定がある場合 Rubyの拡張を使用すると、Ruby on Railsに/ルビーを、など。使用する予定の場合は、

そのように、あなたは強いと固体背景コアを持ちながら、それがコンパイルされているため(、(Cからではなく、PHPからの要求を処理するための方法難しいかもしれません)簡単で、保守が容易あなたの流線コードを維持し、コンパイラができ)問題は、コンパイル時に何であるかがわかります。

他のヒント

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

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

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

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

私にとって、コンパイル時にバグを見つけることは重要です。 巨大な 時間の節約になるため、私は強く型付けされたコンパイル言語を好む傾向があります。これにより、仕事をより速く終わらせることができますが、それが客観的に最良の選択肢であるとは限りません。弱く型付けされたコードを作成し、そのコード上でテスト スイートを実行して機能を検証することに問題を感じない人もいます。私はそれも同様に機能すると思います。

私見管理上の問題の数に対して利益を与えないよう、コンパイル言語を使用して、複雑なWebアプリケーションを書くために、非常にナンセンスです。

があり、マイナー性能がコンパイル言語で最終的に利用できる得ること、言語レベルで、システム・レベルの両方で、スクリプト言語でのパフォーマンスと拡張性を上昇させる方法の多くは全く影響力ます。

他の側では、私は単にあなたのコードを変更し、結果を見て、アジャイル開発とバグの狩猟スキーマに従うことを可能にするために非常に便利。

Perlはインタプリタ言語ではありません:あなたはperlの実行ファイルを起動したときにのみ解釈の価格を支払うので、それは、バイトコードにコンパイルされます。 Apacheで、それを使用するときに、CGIが、mod_perlを使用しないでください。

何をするにしても、開発時間はおそらくあなたがWebプログラミングに適していないか、あなたが何をする必要があるかをサポートするための良いライブラリを持っていない言語を選択する場合に広く応答時間を超えることが起こっています。例えば。私はCまたはC ++を選ぶことはありませんでした。あなたは猛烈に速いが、後半バギーと6ヶ月でのWebアプリをしたくない。

トムキャット これはコンパイル言語を使用して Web ページを展開する一般的な方法ですが、やりすぎる前に、真剣に検討してください。 速度のボトルネックは何か. 。Web アプリケーションの速度低下の主な原因は次のとおりです。

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

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

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

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

「なぜphpを最適化するのですか?」と聞かれる人がいるのは、2と3の方が重要なことが多いからです。多くの場合、良い データベース キャッシュ フレームワーク より良い (そしてより簡単な) 最適化になるでしょう。

Webアプリケーションに入る部分がたくさんあります。アプリケーション層にかかる時間は大きなものとする必要はありません。典型的なアプリケーションでは、最大の豚は、ウェブサーバに、データベースになります。バイナリCGIとPHPの交換は、これを変更するつもりはないされます。

PHPの解釈の部分が多少遅くなることがありながら、

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

が存在価値があるかもしれませんPHPとは異なる言語を使用していくつかのケースであってもよいが、それらは特殊なケースですがあります。一般的には、ここで得るものは何もありません。

ネットワークの待ち時間は、はるかに、この引数の最大の決定要因です。実際には、ネットワークの待ち時間は、それがパフォーマンスの問題から、むしろ重要でない言語の考慮事項をレンダリングする因子のそんなにあります。だから... ...あなたが知っているものを持って行きます。あなたが一緒に行くように、あなたが最も快適かつ最も生産されている言語およびその他の考慮事項を使用して加工することができます。今、言った、それは、強迫観念になることができる新しいことを学ぶプロジェクトは、すべての手段によって、よく、あなたに実験する機会を可能にする個人的なものであればそう.....

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top