3

処理されたネットワーク ファイル共有のリストを (完全な UNC パスを保持して) メモリに格納する必要があるため、これらのフォルダーを再度処理する必要はありません。

配列を使用するつもりでしたが、ハッシュテーブルの方が高速なオプションである可能性があると考えています。そのフォルダー パス (文字列値) が既に存在する場合は、いくつかの場所を確認する必要があります。

(その値の存在をチェックするために)最速でメモリ消費の少ないオプションは何ですか?

  1. key=folder path と空の値を使用して、フォルダー パスをハッシュテーブルに格納します
  2. フォルダー パスを 1 次元配列に格納する
  3. 他の何か

更新: 50000 個の文字列を生成し、3 つのルックアップを実行することで、以下に示すスレッドのようないくつかのテストを実行しました。メモリ消費量も調べたところ、HashSet が勝者でした。HashTable は依然として適切なオプションですが、Array は最悪のオプションです。

配列 - 作成に 125048 ミリ秒、検索に 37 ミリ秒、RAM に 18Mb

ハッシュ - 作成に 2167 ミリ秒、検索に 0.74 ミリ秒、RAM に 2.4Mb

HashSet -作成に1966ミリ秒、検索に0.02ミリ秒、RAMに1.4Mb

4

1 に答える 1

4

この状況では、データを入力した後にキーをクエリすることになり、アイテムの数が比較的多いため、配列よりも hastable を使用することをお勧めします。ハッシュテーブルから始めます。パフォーマンスが適切でない場合は、.net のDictionary(T,V)や .net 3.5+ のHashSet(T)を利用するなど、別の方法を試してください。

また、ここにあなたが興味を持っているリンクがあります:

Powershell 2 と .NET: 非常に大きなハッシュ テーブルを最適化しますか?

于 2012-10-25T19:11:33.117 に答える