Como dijo Josh, se trata de una micro-optimización que ni siquiera debería considerar si no ha demostrado su necesidad. También en realidad no es difícil de probar:
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();
}
No sólo es la versión XmlWriter
consistentemente más rápido por una milésima de segundo o dos, produce XML bien formado, que el otro método no lo hace.
Pero ambos métodos crean documentos XML de 100,000 elementos en aproximadamente 60 milisegundos en mi computadora portátil de dos años, una cantidad de tiempo que se reduce a insignificancia en comparación con el tiempo que se tardará en enviar tantos datos a través de la red .
Awesome Job. De hecho, hice lo mismo en mi máquina y regresé aquí para publicar los resultados, pero me ganaste al golpe. Mis resultados son esencialmente los mismos que has encontrado. +1 – Josh
Acepto que XmlWriter es mejor, pero si hablamos de optimización, string.Format no es un camino por recorrer. sb.Append ("") .Append (content) .Append (" "); hace que la versión de StringBuilder sea 2.5 veces más rápida que la otra. –