gpt4 book ai didi

c# - StringBuilder 与 XmlTextWriter

转载 作者:数据小太阳 更新时间:2023-10-29 01:42:44 25 4
gpt4 key购买 nike

我正在尝试从提供 Xml 内容的自定义 HttpHandler 中尽可能多地发挥性能。

我想知道哪个对性能更好。使用 XmlTextWriter 类或临时 StringBuilder 操作,例如:

StringBuilder sb = new StringBuilder("<?xml version="1.0" encoding="UTF-8" ?>");    
sb.AppendFormat("<element>{0}</element>", SOMEVALUE);

有没有人有第一手经验?

最佳答案

正如 Josh 所说,这是一个微优化,如果您还没有证明它的必要性,您甚至不应该考虑它。它也确实不难测试:

static void Main(string[] arguments)
{
const int iterations = 100000;

Stopwatch sw = new Stopwatch();
sw.Start();
string s = CreateUsingStringBuilder("content", iterations);
sw.Stop();
Console.WriteLine(String.Format("CreateUsingStringBuilder: {0}", sw.ElapsedMilliseconds));

sw.Reset();
sw.Start();
s = CreateUsingXmlWriter("content", iterations);
sw.Stop();
Console.WriteLine(String.Format("CreateUsingXmlWriter: {0}", sw.ElapsedMilliseconds));

Console.ReadKey();
}

private static string CreateUsingStringBuilder(string content, int iterations)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < iterations; i++ )
sb.AppendFormat("<element>{0}</element>", content);

return sb.ToString();
}

private static string CreateUsingXmlWriter(string content, int iterations)
{
StringBuilder sb = new StringBuilder();
using (StringWriter sw = new StringWriter(sb))
using (XmlWriter xw = XmlWriter.Create(sw))
{
xw.WriteStartElement("root");
for (int i = 0; i < iterations; i++ )
xw.WriteElementString("element", content);
xw.WriteEndElement();
}
return sb.ToString();
}

XmlWriter 版本不仅始终快一两毫秒,而且它生成格式良好的 XML,而其他方法则不能。

但是这两种方法都在我用了两年的笔记本电脑上大约 60 毫秒内创建了 100,000 个元素的 XML 文档,与通过网络推送那么多数据所花费的时间相比,这个时间已经变得微不足道了。

关于c# - StringBuilder 与 XmlTextWriter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2478427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com