无法更快地处理循环



我有这个特定的代码:

public static string To_Bits(string data, object ConversionTable)
{
string toBits = "";
string tmpBin = "";
var json = JsonConvert.SerializeObject(ConversionTable);
var cTable = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
for (int i=0; i<data.Count(); i++)
{
tmpBin = data[i].ToString();
toBits += cTable[tmpBin];

}
return toBits;
}

随着数据越来越大,基于conversionTable的转换需要更长的时间,并且在某些情况下VS 2019给我以下消息";应用程序处于中断模式";。

他们有没有通过LINQ或其他方法来优化这些代码,使其处理速度更快?

有两个缓慢的时刻:

  • data.Count()-它计算每次循环迭代的字符串长度
  • toBits +=最好使用StringBuilder以避免不必要的分配
public static string To_Bits(string data, object ConversionTable)
{
var toBits = new StringBuilder();
var tmpBin = "";
var json = JsonConvert.SerializeObject(ConversionTable);
var cTable = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
for (int i = 0; i < data.Length; i++)
{
tmpBin = data[i].ToString();
toBits.Append(cTable[tmpBin]);
}
return toBits.ToString();
}

尝试替换

for (int i=0; i<data.Count(); i++)
{
tmpBin = data[i].ToString();
toBits += cTable[tmpBin];        
}

带有

foreach (string c in data)
{
toBits += cTable[c];     
}

最新更新