【问题标题】:c# ReadToEnd slow performance with large xml filesc# ReadToEnd 大型 xml 文件性能低下
【发布时间】:2023-03-10 10:37:02
【问题描述】:

我从服务中获得了巨大的 xml 文件,并且我遇到了 readtoend 的一些性能问题,使用 3 个 replace() 大约需要 2 分钟才能完成,而不使用 replace() 则需要 1.3 分钟。

 HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
  using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
{
result = sr.ReadToEnd().Replace("\n", "").Replace("\r", "").Replace("\t", "");   
         sr.Close();
        //ReadToEnd it is taking about 2 minutes to complete 
}

用什么来克服这个性能问题。

已编辑 xml 文件大小为 2.77 MB

【问题讨论】:

  • 您是说 3 次替换需要 0.7 分钟吗?这就是您要解决的问题吗?
  • 这个问题stackoverflow.com/questions/901323/… 看起来不错。
  • @HenkHolterman 我想解决这两个问题。

标签: c# performance


【解决方案1】:

当你使用 .Replace("\n", "") 你实际上复制了整个字符串,在这种情况下你做了 3 次,更好的方法是将它读入 String builder 并在那里进行替换,你可以还从字符串生成器一次读取和添加一个字符,并跳过不需要的字符。

【讨论】:

  • 正则表达式如果你写得正确会解决字符串重复的问题,但它在评估字符串时可能会变慢,尝试测量它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-15
  • 2011-11-03
  • 2019-08-16
相关资源
最近更新 更多