EN resumen, el switch ocupa mas memoria que el goto, supongo que es porque es mas parecido al lenguaje ensamblador.
¿Que opinais respecto a su uso ahora?¿Habria otra opcion mas optimizada que la del goto?
Arimai el switch debiera funcionar como un "goto computado". Es decir, que debiera saltar a uno u otro lado de acuerdo al valor de la variable.
Como verás no te hace falta usar el goto, el switch te lo resolvió perfectamente, un punto más a favor de que el goto no es necesario en un lenguaje como C.
Ahora yendo al lado de la optimización del código generado, intervienen muchos factores que hay que tener en cuenta.
Entre los factores, se encuentra tu conocimiento sobre cómo tu compilador trata el código, cómo lo optimiza, etc. Conociendo esas cosas (que uno trabajando en PC rara o ninguna vez tiene en cuenta) es que podrás llegar a optimizar tu código en C, pero usar el goto no me parece "la salida elegante" a tu problema.
Te propongo, si te parece, que indiques qué compilador usas, en que micro irá alojado el código, cómo es el switch completo (no es lo mismo un switch donde en cada lado enciendas un led o que hagas 400 cosas), ¿Tienes forma de separar cómo es el código generado de ese segmento de código?
Saludos