2016-10-09 4 views
0

私たちは画像処理アプリケーションを開発しています。フィルタ、ガウス関数などの適用が必要です。これを高度に並行したアプリケーションにしたいと考えています。 これは、複数のシングルコアec2インスタンス上にあります。画像処理用のnode.jsまたはPHP

画像処理はCPU集約的な操作なので、node.jsがイベントループでブロックされると考えているので、PHPを使うことを考えています。この分野でベンチマークを見つけることはできません。この上の入力は大きな助けになるでしょう。

+0

大量の画像を通す必要があるか、少数の大きな画像を送るか、少数の画像それぞれが大量の処理を必要とするか、または関係する処理についての何かが必要です。スピードは本当に主な基準ですか?あるいは、単一のCPUマシンで可能な限り単位コストあたりの速度ですか?あなたのアルゴリズムは言語より多くの違いを生む可能性があります。本当にスピードが必要な場合は、C/C++を検討する必要があります。 –

+0

私は多数の小さな画像を誇張する必要があります。処理は、画像を鉛筆スケッチに変換することです(反転+ guassianfilterとdodge)。私はGuassianを適用することで処理量が増えることを願っています。スピードが主な基準です – ayniam

+0

偉大な、唯​​一のCarl Friedrich Gaussへの賛辞 –

答えて

0

PHPは並行性が高くなく、各リクエストは完了するまでブロックされます。主にI/Oを実行しているか、別のプロセスが戻ることを待っている限り、ノードは正常です。処理自体を行うのではなく、convert(ImageMagick)を呼び出してください。実際の変換をオンにしなければならないCPUコアが増えれば増えるほど良いでしょう。

1

これは、CPUにバインドされたタスクです。 PHPやNodeの最適化は、おそらく同様に機能します。 I/Oの並行性は、シングルコアのCPUバウンドタスクには影響しません。多くのコアでI/Oが有効になるかもしれませんが、現実的にはPHPを含むほとんどのプラットフォームで同時I/Oの効率的な戦略が実現しています。また、あなたはCやC++のコードに関係なく呼び出すことになりそうです。

実際に(コストパフォーマンスの高い)パフォーマンスが必要な場合は、単一のコアのものを落とし、基本的に大規模なゲームやビットコインのマイニングPCをオフィスに置き、マシン間でタスクを分散するうまい方法を見つけるGPUで同時に複数の画像を処理する方法。それは実際には特定のプログラミング言語に結びついていません。

+0

シングルスレッドなので、nodejs eventloopはブロックされません。 – ayniam

+0

はい、複数のPHPプロセスやスレッドがある場合、1つのCPUでもブロックされます。技術ノードには、すべてのデータの入出力を同時に行う必要があるにもかかわらず、同時に動作するwebworkerスレッドがあります。しかし、通常のノードクラスタは、同時に並行して処理できます。 1つのコアは重要ではありません。 –

+0

あなたの実装の詳細になるでしょう。 PHP/Node/OS/etcのバージョンや型式の正確さによりますが、いずれの方が速いかもしれません。あなたが1つのコア期間を主張するなら、あなたは手がかりがありません。それぞれが独自の仮想コアを取得すれば、複数のVMやコンテナを利用できます。パフォーマンスを最大限に引き出すためにGPUを使用するように言いました。 –

0

イメージ処理では、Node.jsの代わりにPHPを使用することをお勧めします。これは、イメージを簡単に扱うのに役立つPHPパッケージが数多くあるためです。 PHP7やHHVMの性能について心配しないでください:)