La segunda es posiblemente ligeramente mejor en términos de uso de memoria, ya que no es necesario para calcular la cadena intermedia ... pero es menos legible, la OMI.
Personalmente me gustaría usar:
msgEntry.AppendFormat("<{0}>{1}</{0}>", timeTag, timeStamp);
No ha mostrado lo que quiere hacer con el StringBuilder
después. Si solo vas a convertirlo en una cadena, entonces utilizaría:
string text = string.Format("<{0}>{1}</{0}>", timeTag, timeStamp);
para empezar.
¿Cómo es el rendimiento? Bueno, probablemente sea peor, después de todo, tiene que analizar la cadena de formato. Pero a menos que hayas medido esto y hayas encontrado que es el cuello de botella, ¿por qué estás preocupado?
En general:
- Asegúrese de que su arquitectura es razonablemente eficiente - eso es difícil de cambiar más adelante.
- Equilibre su diseño interno entre la eficiencia y la simplicidad, con énfasis en la capacidad de prueba; cambiar el diseño más tarde puede tomar un tiempo, pero por lo general debería ser posible sin problemas de compatibilidad.
- Escriba su implementación para que sea lo más legible posible.
- Mida el sistema para averiguar si funciona bien y dónde están los cuellos de botella. Casi nunca van a estar en un código como este. (No estamos hablando de la concatenación de cadenas en un bucle aquí, después de todo.)
- Cuando haya encontrado un cuello de botella, probar diferentes optimizaciones y medirlos demasiado. No asuma que algo que cree que será más rápido será en realidad sea más rápido.
O la matriz para pasar a Concat
... no sabemos el tipo de timeStamp
así que no podemos decir exactamente lo que está pasando allí; en la segunda forma, puede adjuntarse in situ, mientras que la primera forma puede necesitar encasillarla y luego convertirla en una cadena antes de realizar la concatenación.
La implementación exacta para la reasignación, etc. puede haber cambiado entre .NET 3.5 y .NET 4 (sé que algunos aspectos de la implementación sí lo tienen). Sin una evaluación comparativa muy cuidadosa, detestaría mucho decir qué es más rápido ... pero la legibilidad es más fácil de llamar, aunque subjetivamente.
A menos que ya haya detectado un problema de rendimiento, o este código se ejecuta miles de veces dentro de un bucle o algo así, la diferencia es irrelevante. Ir con la opción más legible. – JohnFx
También puede valer la pena considerar el uso de algunas de las clases de XML existentes.Parece que no está familiarizado con gran parte del marco (ya que no estaba al tanto de las funciones de formato de cadena), le recomiendo que elija algo así como un libro de 21 días para leerlo perezosamente, para aprender sobre esas cosas. – overslacked
Voto por volver a abrir: cuando no se utiliza en un bucle, la situación de rendimiento es diferente. En este caso específico, la concatenación de cadenas (opción 1) usaría una única llamada a String.Concat que funciona mejor que las siete llamadas a StringBuilder.Append. Estaba a punto de escribir una respuesta señalando esto ... – MartinStettner