次のコードがあります。
// Dictionary which I want to optimize
Dictionary<string, MyClass> myDict;
//
Dictionary<int, KKSKey> kksKeyList;
...
...
...
// Classes
[Serializable]
public class MyClass : MyBaseClass
{
Dictionary<int, DebugValue> myDebugValues;
...
...
...
}
//
[Serializable]
public class DebugValue
{
public int ValueType {get;set;}
public double Value {get;set;}
...
...
...
}
public class KKSKey
{
public string KKS { set; get; }
public string Variable { set; get; }
...
...
...
}
私がどこでも辞書を使用した理由は、キーでリストにアクセスする必要があるからです。
for
550,000 回 (はい!) をわずかに超えるループに次の行があります。myDict
には約 10,000 個のアイテムkksKeyList
があり、550,000 個以上のアイテムがあります。
次の各行が に対して実行されi = 0 to 550,000
ます。
myDict[kksKeyList[i].KKS].myDebugValues[i].ValueType = DOUBLE;
myDict[kksKeyList[i].KKS].myDebugValues[i].Value = tempdouble;
基本的に、上記の行は、TCP 経由で受信した生データでディクショナリ項目を埋めています。上記の各行は、for
ループごとに約 90 ~ 100 ミリ秒かかります (550,000 回)。これは私のアプリケーションでは受け入れられません。上記の行の 1 つを 50 ミリ秒以内に完了する必要があります。上記の操作のパフォーマンスを最適化する方法を誰かが提案できますか? 必要に応じて関連するクラスを再定義することを意味する場合でも、私はどんな提案にもオープンです。