Josh dediği gibi, bu onun gerekliliğini ispat değil eğer bile dikkate almamalıdır mikro iyileştirmedir. Bu teste zamanda gerçekten zor değil:
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();
}
sürekli daha hızlı bir milisaniye veya iki tarafından XmlWriter
versiyonu Sadece, diğer yöntem değildir, iyi biçimlendirilmiş XML, üretir.
Ancak her iki yöntemde, iki yıllık dizüstü bilgisayarımda yaklaşık 60 milisaniyede 100.000 öğeli XML belgesi oluşturuluyor. Bu, ağ üzerinde bu kadar veriyi iletmek için harcayacağı süreye kıyasla önemsiz bir hale geliyor. .
Harika İş. Aslında bu şeyi makinemde yaptım ve sonuçları göndermek için buraya geliyordum, ama beni yumrukla dövüyordun. Sonuçlarım, esas olarak bulduğunuz ile aynı. +1 – Josh
XmlWriter'in daha iyi olduğunu kabul ediyorum, ancak optimizasyon hakkında konuşuyorsak string.Format gitmek için bir yol değil. sb.Append ("") .Append (content) .Append (" "); StringBuilder sürümünü diğerinden 2,5 kat daha hızlı hale getirir. –