3

スキャンした画像を含むディレクトリを入力として受け取る Windows サービス アプリケーションを構築しています。私のアプリケーションは、すべての画像を反復処理し、すべての画像に対して OCR 操作を実行して、バーコード、請求書番号、および顧客番号を取得します。

背景情報:

  1. アプリケーションによって実行されるタスクはかなり CPU を集中的に使用します
  2. 処理する画像が多数あり、スキャンした画像ファイルが大きい (~2MB)
  3. アプリケーションは、16 GB の RAM を搭載した 8 コア サーバーで実行されます。

私の質問:

ファイル システム上のイメージを処理しているため、.NET Parallel Tasks を使用するようにアプリケーションを変更した場合に、実際に違いが生じるかどうかはわかりません。

誰でもこれについてアドバイスをもらえますか?

どうもありがとう!

4

2 に答える 2

1

答えは「場合による」だと思います。

何らかの種類のパフォーマンス モニタリング (タスク マネージャーのモニタリングも含む) を使用してアプリケーションを実行し、CPU の使用率がどれくらい高くなるかを確認します。

CPU が限界に達している場合。並列で実行するとパフォーマンスが向上します。そうでない場合は、ディスクがボトルネックであり、他の変更がなければ、おそらく (あったとしても) あまり多くは得られないでしょう。

于 2011-04-26T22:00:27.057 に答える
1

イメージの処理に、ディスクから N 個のイメージを読み取るよりも時間がかかる場合は、複数のイメージを同時に処理する方が効果的です。ディスクから 2 MB のファイルを 100 ミリ秒未満 (シーク時間を含む) で読み取ることができると考えてください。8 つの画像をメモリに読み込むのに 1 秒かかるとします。

したがって、画像処理に画像ごとに 1 秒以上かかる場合でも、I/O は問題になりません。同時に行います。必要に応じて縮小することもできます (つまり、処理に 1/2 秒かかる場合は、4 つの同時画像のみを使用することをお勧めします)。

これをかなり迅速にテストできるはずです。ディスクから画像をランダムに読み取るプログラムを作成し、ファイルを開いたり、読み取ったり、閉じたりする平均時間を計算します。また、画像のサンプルを処理し、平均処理時間を計算するプログラムを作成します。これらの数値は、並行処理が役立つかどうかを示しているはずです。

于 2011-04-26T22:30:46.547 に答える