¿Qué es más rápido, encienda la cadena o si no en el tipo?

Dejemos decir que tengo la opción de identificar una ruta de código para tomar en base a una comparación de cadenas o, de lo contrario, si escribimos el tipo:

¿Qué es más rápido y por qué?

switch(childNode.Name)
{
    case "Bob":
      break;
    case "Jill":
      break;
    case "Marko":
      break;
}

if(childNode is Bob)
{
}
elseif(childNode is Jill)
{
}
else if(childNode is Marko)
{
}

Actualizar La razón principal por la que pregunto esto es porque la declaración de cambio es peculiar sobre lo que cuenta como un caso. Por ejemplo, no le permitirá usar variables, solo constantes que se mueven al ensamblaje principal. Supuse que tenía esta restricción debido a algunas cosas funky que estaba haciendo. Si solo se traduce a elseifs (como comentó un afiche), ¿por qué no se permiten variables en las declaraciones de caso?

Consideración Estoy post-optimización. Este método se llamamucho veces en una parte lenta de la aplicación.

Respuestas a la pregunta(46)

Su respuesta a la pregunta