1

約100枚の画像(pngファイル)を組み合わせる必要があります。問題はそれらを組み合わせることではなく、それは十分に速く実行されます。ただし、ストレージからのロードには最大4秒かかります。それは時間がかかりすぎます。

したがって、TPLまたは複数のスレッドを使用できますが、それでも遅すぎます。どうすればスピードアップできますか?残念ながら、すべての画像をメインストレージに保持することはできません。

画像は非常に小さいです:4KByteから10KByteまで

私はそのように画像をロードしています:

Image img = Image.FromFile(file);
4

3 に答える 3

3

複数のスレッドを作成しても、I/O速度は向上しません。これは、ハードディスクの読み取り/書き込み速度についてです。

4秒間に100枚の高品質画像をロードするのは正常なようです。

于 2012-04-10T13:22:25.683 に答える
1

2つのアイデア:

  • ラグの大部分が実際にIOによるものである場合は、ファイルを圧縮します。内容によっては、単純なZIP圧縮でもサイズが小さくなり、読み取るバイト数が少なくなる可能性があります。作業は、それらをメモリ内で解凍することです。それがあなたのケースに当てはまるかどうかはわかりません

  • それらを遅延ロードします。100枚すべての画像を常にロードする必要がありますか?おそらく、最初の画像をロードするか、最も重要な画像を最初にロードして、バックグラウンドで残りの画像のロードを完了している間に、ソフトウェアに他の処理を実行させることができます。

于 2012-04-10T14:47:02.480 に答える
0

画像ファイルをどのようにロードしますか?コードの一部を共有してください。私の推測では、ファイル全体を一度に読み取るのではなく、EOFまでバイトごとに読み取ると思います...ファイルの読み込みを最適化する方法の1つは、ファイル全体を事前に割り当てられたメモリバッファに読み込むことです。

于 2012-04-10T13:24:08.750 に答える