リモートサーバーからの最適化された画像ダウンロードメカニズムの実装に取り組んでいます。
私は2つの異なるアプローチを考えました。
1. 1 つの新しいスレッドを作成し、その単一のスレッドで非同期の方法ですべての画像をダウンロードします。
2. 各画像をダウンロードするためのスレッドを作成します。50個の画像をダウンロードしたい場合、それらの画像をダウンロードするための50個のスレッドがあります。
設計と最適化の観点から、どちらのアプローチが優れていますか?
ありがとう、
ジム。
リモートサーバーからの最適化された画像ダウンロードメカニズムの実装に取り組んでいます。
私は2つの異なるアプローチを考えました。
1. 1 つの新しいスレッドを作成し、その単一のスレッドで非同期の方法ですべての画像をダウンロードします。
2. 各画像をダウンロードするためのスレッドを作成します。50個の画像をダウンロードしたい場合、それらの画像をダウンロードするための50個のスレッドがあります。
設計と最適化の観点から、どちらのアプローチが優れていますか?
ありがとう、
ジム。
どちらのソリューションにも落とし穴があります。
1) スレッドが 1 つしかないということは、一度に 1 つのイメージしかダウンロードできないということですか? これは非効率なようです
2) 一度に 1 つのダウンロードを行うのは悪い考えであるのと同じ理由で、50 個のイメージを同時にダウンロードするのはパフォーマンスの悪い考えであり、すべてが遅くなります。また、データをダウンロードするスレッドがシステムのリソースを消費することも考慮してください (ネットワーク I/O、ディスク I/O など)。
ホイールを再発明せず、キューのココア/ココアタッチ実装であるNSOperationQueueを使用することをお勧めし ます。つまり、いくつの操作を追加できますか (この場合、操作はイメージのダウンロードです)、指定できます同時操作の最大数 (maxConcurrentOperationCount
プロパティ経由)。
NSOperationQueue はすべてのマルチスレッド処理を処理し、iOS 4 以降では GCD を使用して操作を実行します。