我有这个特定的代码:
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];
}