Sospecho que la información sobre Xbox 360 y PS3 específicamente va a estar detrás de muros solo para desarrolladores con licencia, como la mayoría de los detalles de bajo nivel. Sin embargo, podemos construir un programa x86 equivalente y desarmarlo para tener una idea general.
Primero, veamos qué costos de ampliación sin firmar:
unsigned char x = 1;
unsigned int y = 1;
unsigned int z;
z = x;
z = y;
La parte relevante se desmonta en (usando GCC 4.4.5):
z = x;
27: 0f b6 45 ff movzbl -0x1(%ebp),%eax
2b: 89 45 f4 mov %eax,-0xc(%ebp)
z = y;
2e: 8b 45 f8 mov -0x8(%ebp),%eax
31: 89 45 f4 mov %eax,-0xc(%ebp)
Básicamente lo mismo: en un caso, movemos un byte, en el otro, movemos una palabra. Próximo:
signed char x = 1;
signed int y = 1;
signed int z;
z = x;
z = y;
Se convierte en:
z = x;
11: 0f be 45 ff movsbl -0x1(%ebp),%eax
15: 89 45 f4 mov %eax,-0xc(%ebp)
z = y;
18: 8b 45 f8 mov -0x8(%ebp),%eax
1b: 89 45 f4 mov %eax,-0xc(%ebp)
Por lo tanto, el costo de la extensión del signo es el costo de movsbl
más que el movzbl
nivel de subinstrucción. Eso es básicamente imposible de cuantificar en los procesadores modernos debido a la forma en que funcionan los procesadores modernos. Todo lo demás, desde la velocidad de la memoria hasta el almacenamiento en caché de lo que estaba en la tubería de antemano, dominará el tiempo de ejecución.
En los ~ 10 minutos que me llevó escribir estas pruebas, pude encontrar fácilmente un error de rendimiento real, y tan pronto como enciendo cualquier nivel de optimización del compilador, el código se vuelve irreconocible para tareas tan sencillas.
Esto no es Stack Overflow, por lo que espero que nadie aquí diga que la microoptimización no importa. Los juegos a menudo trabajan en datos que son muy grandes y muy numéricos, por lo que la atención cuidadosa a la ramificación, los lanzamientos, la programación, la alineación de la estructura, etc. puede proporcionar mejoras muy importantes. Cualquiera que haya pasado mucho tiempo optimizando el código PPC probablemente tenga al menos una historia de terror sobre las tiendas de carga y descarga. Pero en este caso, realmente no importa. El tamaño de almacenamiento de su tipo entero no afecta el rendimiento, siempre que esté alineado y quepa en un registro.