iOSデバイスのディスク上のファイルとWebサービスの何千ものファイルを一致させる必要があります。現在私はこれをループで行い、ディスク上のすべてのファイルをattributesOfItemAtPath
(shared NSFileManager
)に検証して、ファイルのサイズが変更されていないかどうかを確認しますが、間違っていると感じます。たぶん、すべてのファイルをループするのが最もクリーンな方法ですが、余分なディスクI/Oを害することなく、ディレクトリ内のすべてのファイル(またはNSDictionary
)のすべてのファイルに対してattributesOfItemAtPath
を実行する方法があるかどうかは疑問でした。多くのファイルのためのattributesOfItemAtPath
コードがループ内で実行され、その後、それがない、ディスク上のすべてのファイルについて:
fileAttributes = [_Core.fileMgr attributesOfItemAtPath:savePath error:nil];
if ([fileAttributes fileSize] != [[image valueForKey:@"filesize"] intValue]) {
... // the file has changed or is new
}
私はすでにそれを再ロードするアプリ経由になると、最後の既知のファイルサイズをキャッシュと思っています多くのファイルの属性をより効率的に取得するためのより効率的な方法があれば、私はまだ疑問に思っていますローレベル効率的な方法です。
最後に、このコードは私に遅さを与えていません。私は、過度のディスクI/Oを排除する方法があるのかどうか疑問に思っています。時にはこのスクリプトが数百から数千メガバイトのイメージをダウンロードし、長い時間がかかり、多くのディスクヒットをすることがあるからです。おそらく、NSPathUtilities
のような非常に低いレベルで可能なことがありますか?私はむしろ2〜4MBのメモリをキャッシュしてリストをキャッシュし、ディスクを何千も追加することなく何千ものディスクに書き込むことになります。
これは素晴らしいことです。私は確かにそれを調べます。 VDKはGCDを必要としているようですが、readmeには明示的にOS Xが必要だと書かれています。 (古い)iPad 3での7kファイルのチェックは、現在約2秒かかります。これは当初、または(1時間のインターバルタイマーで)アプリをリロードするときに発生するので、それほど悪くはありません。私はちょうどこの素晴らしい最適化フローにあり、どこでもCPUサイクルとメモリチャンクを獲得しようとしています:)。チップ1+ –