0

現在、私のプログラムは次のように機能します。

List<Dict<string, double>> GroupA;
List<Dict<string, double>> GroupB;
* All dictionaries have the same keys but with dif values

foreach(string key in GroupA[0])
{
      List<double> GroupA_Values;
      foreach(Dict d in GroupA)
          GroupA_Values.add(d[key]);

      List<double> GroupB_Values;
      foreach(Dict d in GroupB)
          GroupB_Values.add(d[key]);

      CompareValuesFunction(GroupA_Values, GroupB_Values);
}

これを行うより効率的な方法はありますか?

4

1 に答える 1

0

辞書のリストを持つのではなくDictionary<string, List<string>>、値が特定のキーに関連付けられたすべての値のリストである場所を持つ必要があります。

現在、辞書の値ごとに、すべての単一の辞書のすべての単一の値に対処しています。これはまったくうまくスケーリングしません。すべての値をリストにコピーすると、すべてが多項式ではなく線形にスケーリングされます。

このセットアップでは、メモリの消費も少なくなります (辞書は、高速な検索速度を実現するために、他のデータ構造よりも多くのメモリを消費します)。

コメントで述べたように、何についてもっと知っていればCompareValuesFunction(つまり、コードを見て)、追加の改善を提案できるかもしれません。

于 2012-05-30T01:43:39.310 に答える