Es String.Format tan eficiente como StringBuilder

Supongamos que tengo un stringbuilder en C # que hace esto:

StringBuilder sb = new StringBuilder();
string cat = "cat";
sb.Append("the ").Append(cat).(" in the hat");
string s = sb.ToString();

¿Sería tan eficiente o más eficiente que tener:

string cat = "cat";
string s = String.Format("The {0} in the hat", cat);

Si es así, ¿por qué?

EDITA

Después de algunas respuestas interesantes, me di cuenta de que probablemente debería haber sido un poco más claro en lo que estaba preguntando. No estaba preguntando cuál fue más rápido para concatenar una cadena, pero cuál es más rápido en inyectando una cadena en otra.

En los dos casos anteriores, quiero inyectar una o más cadenas en el medio de una cadena de plantilla predefinida.

Perdón por la confusio

Respuestas a la pregunta(12)

Su respuesta a la pregunta