Supongamos que tengo un StringBuilder en C# que hace esto:¿Es String.Format tan eficiente como StringBuilder
StringBuilder sb = new StringBuilder();
string cat = "cat";
sb.Append("the ").Append(cat).(" in the hat");
string s = sb.ToString();
habría que ser tan eficiente o más eficiente porque tiene:
string cat = "cat";
string s = String.Format("The {0} in the hat", cat);
Si es así , ¿por qué?
EDITAR
Después de algunas respuestas interesantes que se dieron cuenta de que probablemente debería haber sido un poco más claro en lo que estaba pidiendo. No estaba tanto preguntando qué era más rápido para concatenar una cadena, pero que es más rápido en inyectando una cadena en otra.
En ambos casos anteriores quiero inyectar una o más cadenas en el medio de una cadena de plantilla predefinida.
Lo siento por la confusión
Por favor, deje esto abierto para permitir futuras mejoras. –
En un escenario de caso especial, el más rápido no es ninguno de estos: si la parte que se va a reemplazar tiene el mismo tamaño que la parte nueva, puede cambiar la cadena en contexto. Desafortunadamente, esto requiere reflexión o código inseguro y viola deliberadamente la inmutabilidad de la cadena. No es una buena práctica, pero si la velocidad es un problema ... :) – Abel
en el ejemplo anterior '' 'string s =" El "+ cat +" en el sombrero ";' '' podría ser el más rápido a menos que se use en un bucle, en cuyo caso el más rápido será con '' 'StringBuilder' '' inicializado fuera del ciclo. –