パフォーマンスが何よりも重要な Web アプリケーション プロジェクトがあり、使用するテクノロジを選択できます。
Web アプリケーションとはあまり関係のない言語の銃撃戦のベンチマーク。
最適な候補として何をお勧めしますか?
ありがとう!
友人が IRC で gwan サーバーを提案しました。私が探していたもののように見えますが、以前は聞いたことがありませんでした。このパッケージの経験がある人はいますか? 使いやすさ、信頼性は?
Apache を離れる前に、あなたの考えを聞きたいと思います。
パフォーマンスが何よりも重要な場合は、スクリプト言語を使用しないでください。特に、テクノロジースタックを完全に制御できるためです。コンパイルされた言語は、CPU を集中的に使用する操作のパフォーマンスが向上します。
G-WAN はきちんとした Web サーバーです。「C スクリプト」の概念に基づいています。
AC スクリプトは、Web サーバーによってコンパイルされ、保護されたメモリにロードされる単純な C ソース コードです。サーブレットへのリクエストが行われると、Web サーバーによって呼び出されます。サーブレットは、C コンパイラによってコンパイルされるため、通常の C プログラムのコンパイルと同じくらい高速です。ただし、たとえば CGI や FastCGI に対する C スクリプトの利点は、コンパイルされたプログラムが Web サーバーと同じメモリ空間にあることです。これにより、通信のオーバーヘッドが削減されます (CGI の場合は要求ごとにプロセスを作成するか、FastCGI の場合はソケットを作成することによって)。
Web サーバーは選択/ポーリング手法を使用しています: ノンブロッキング I/O。しかし、それにはきちんとしたことがあります。すべてのプログラムは、ブロッキング I/O を使用しているかのように作成できます。Web サーバー自体が各 C スクリプトをコンパイルするため、非ブロッキング I/O を使用するようにプログラムを変換できます。この時点で、それ自体をサードパーティ ライブラリ (データベース アクセスなど) にリンクすることができ、スレッド/プロセス コンテキストの切り替えがない非ブロッキング I/O の性質を引き続き利用できます。
C スクリプトをプログラミングするために提供されるツールは、たとえば、キャッシングやセーフ バッファです。次の (この記事の執筆時点ではまだリリースされていない) バージョンには、Key-Value ストアも含まれます。
パフォーマンスに関して: 他の Web サーバーよりも優れていることを示すベンチマークがいくつかありますが、私はこれらを信頼していません。CPU を集中的に使用する小規模なプログラムを C と、たとえば PHP で作成してみてください。G-WAN で C スクリプトを実行し、Apache で PHP スクリプトを実行して、自分でベンチマークを実行します。
他にもありますが、それはこの質問の範囲外です。
G-WAN のいくつかの欠点は、開発者が 1 人しかいないことです。ただし、質問できるフォーラムがあります。
使いやすさは、C のスキルによって制限されます。ただし、提供される API は単純です。まだいくつかの矛盾と (私の意見では) 見苦しい部分がありますが、それは問題ではありません。より深刻な問題は、各バージョンが後方互換性を保証されておらず、書き直さなければならない場合があることです。
安全を確保したい場合: C のプラットフォーム非依存性を利用する: コードを (高速) CGI プログラムにコンパイルし、G-WAN で使用できるようにします。G-WAN が失敗する可能性があります。いつでも Apache の (Fast) CGI にフォールバックできます ( API については、http://www.fastcgi.com/ を参照してください) 。
Javascriptは常に精査され、モバイルデバイスでの使用に最適化されているため、実際のフルサイズサーバーでは非常に高速に実行されます。Webページを提供するためにサーバー側のJavaScriptを実装するためのプロジェクトであるNode.JSをチェックしてください:http://nodejs.org/
LuaJit (Lua) は、JIT テクノロジを使用した最速のスクリプト言語です。
サーバー側のWebアプリケーション(常にスクリプトを実行するとは限らない)で最速が必要な場合は、g-wan.. c、c++、java..を使用できます。
ASP.NET は、ほぼすべてのものに対して十分に高速ですが、非常に高価です。
php with hiphop は習得が最も簡単で、十分に高速です..
それは、必要なリクエストの数と、言語を習得する速さによって異なります ^^ 静的データをキャッシュすることを忘れないでください (memcache または nosql を使用)
アプリケーションのパフォーマンスが実際に言語に依存するのか、それとも他の要因 (データベース要求など) に依存するのかを特定することから始めます。結果をキャッシュする機能も非常に重要な要素です。
パフォーマンスに関しては、使用される言語はチェックすべき重要なポイントのリストのかなりの部分を占めており、ユース ケースもどちらの言語が優れているかに影響します。たとえば、確認する正規表現が多数ある場合は、候補言語での正規表現のサポートを確認する必要があります。
画像処理の場合、おそらく最も重要なポイントは、使用する基盤となる画像ライブラリであり、通常は C で記述されています。現在使用しているため、ImageMagick のケースを念頭に置いています。ほとんどの言語のライブラリとして利用でき、スクリプト言語レイヤーはライブラリの関数を呼び出すためにのみ必要であり、そのレベルで使用される言語はあまり変化しません (ただし、事前計算された結果の画像をキャッシュすると、パフォーマンスが大幅に変化する可能性があります)。この使用例は、おそらく暗号化ライブラリを呼び出す場合と似ています。
パフォーマンスが本当に問題になる場合は、画像処理に GPU アクセラレータ カードで動作するライブラリ (cuda または openGPU をサポートするライブラリ) の使用を検討することもできます。
大量のデータを含むデータベースを使用する場合、php や asp や (ここに他のフレーバーを挿入) スクリプトを実行するよりも多くの時間を費やすことになります
可能であれば、アプリのモックアップ (または少なくともセグメントよりデータベースまたはプロセッサを集中的に使用する部分の一部)、それらのベンチマークを試みます
更新: NIO.2 を使用する Java 7 は、C を使用する Gwan よりもパフォーマンスが優れているようですが、タイミングはほぼ 2 倍です。信じられないほどですが、簡単なテストをいくつか実行できます。
Java の唯一の欠点は、C 上に構築された共有ライブラリを統合できないことです。私は、Java NIO.2 が C よりも遅いという私の誤りを証明するよう誰かに挑戦する準備ができています。
高速なスクリプト言語は ASP に続いて PHP ですが、アプリケーションを無制限の速度でスケーリングする場合は、C++ または Java を使用してください。Google 検索は C++ を使用 Gmail は Java を使用 YouTube = Python Twiiter は Ruby を使用していたが、現在は Java に移行 Facebook = フロントエンドで PHP、バックエンドで一部の Java
しかし、フロントエンドには PHP を、バックエンドには C++ をお勧めします。
Java プログラミング言語をお勧めします。スクリプト言語ではありませんが、おそらく Web アプリケーションのプログラミングに使用できる最速のプログラミング言語です。また、Spring のようなフレームワークを使用して、より優れたプログラミング エクスペリエンスを実現することもお勧めします (「生の」Java サーブレット プログラミングではなく)。