2011-11-06 15 views
10

私は現在、画像操作を実行するクライアント側のjavascriptアプリケーションを作成しています。現在実行している操作の中には、ブラウザで実行するのがかなり遅いものがあります(2〜3秒程度かかります)。node.jsはクライアント側のJavascript(Chrome/V8と比較して)よりもパフォーマンス上の利点がありますか?

私が実装しようとしている解決策の1つは、クライアントがwebsocket経由でサーバ(リアルタイム情報などを表示する必要があるためAJAXではなくWebSocket)を使用し、サーバに画像操作の重い作業をさせます

Node.jsはJavascriptでも書かれています。パフォーマンスのメリットはない(クライアント側はChrome/V8で、Node.jsもV8です)。これは正しいと思いますか?あるいは、ChromeのUIは、サーバー側では感じられないクライアント上でのパフォーマンスの低下を必要としますか? (例えば、Chromeは、node.jsサーバが時間を費やさないようにすべての情報を保持するために、バックグラウンドでより多くのUIを使用していますか?)

node.jsはパフォーマンス上の利点がありますか、作業を行うためにCまたはJavaのWebソケットサーバーを探していますか?

+0

JavaScriptでコードを書いているので、Node.jsに試してみることをお勧めします。あまり努力するべきではありません。 –

+0

@FelixKlingあなたが言うように既にJavascriptになっていますが、既存のコードを適切なクライアント/サーバーに分割してWebソケットを作成するのにはかなりの労力がかかります - 私は確かにいくつかのパフォーマンス情報を探したいと思います。そのようなことをする前に –

+0

Node.jsはイメージ操作の重い吊り上げを行うための適切な場所ではありません。しかし、ImageMagickを子プロセスとして呼び出すのは適切なツールです。 – generalhenry

答えて

4

あなたがjavascriptでそれをやっているなら、おそらくクライアントは画像操作を行うより良い場所です。クライアントに関する素晴らしい点は、あなたが自分でプロセッサーを持っていることです。20人の人が一度にイメージ操作を行うと、20台のマシンでそれを実行します。

明らかに、サーバー上でイメージ操作を行う方が理にかなっている場所があります。そのような場合は、javascript以外のものを使用することを検討するのが賢明かもしれません。サーバー上のV8は、クライアントよりもはるかに高速に動作することはなく、ノードはCPU集約型タスク用に作られていません。

おそらく面白いケースがいくつかあります。クライアントでインタラクティブな作業をしてからサーバー上で最終的な作業を行い、その場合はノードに大きな利点があります。同じコード。

+0

クライアントの数などはこのプロジェクトにとってあまり重要ではありませんが(私が知っている奇妙な音です)これは私の質問に答えるのに最も近いと思います –

1

唯一のJavaScriptの実行速度に基づいて、サーバーまたはクライアントで計算を行う場所を決めるべきではありません。

予想されるクライアント(デスクトップまたはモバイル)、サーバーの容量、平均とピークの推定負荷などがさらに重要です。

関連する問題