Questo è un modo divertente per dirlo. Il runtime non ha molto a che fare con questo. La CPU è progettata per l'elaborazione di numeri interi a 32 bit, motivo per cui sono i più efficienti da utilizzare.
In un ambiente a 64 bit, dipende ancora dalla CPU. Tuttavia, almeno sulla CPU x86 (che, per quanto ne so, è l'unico posto su cui gira .NET), i numeri interi a 32 bit sono ancora predefiniti. I registri sono stati semplicemente espansi in modo che possano adattarsi a un valore a 64 bit. Ma 32 è ancora il default.
Quindi preferisco numeri interi a 32 bit, anche in modalità 64 bit.
Modifica: "default" probabilmente non è la parola giusta. La CPU supporta solo una serie di istruzioni, che definiscono quali tipi di dati può elaborare e quali non possono. Non c'è "default" lì. Tuttavia, generalmente c'è una dimensione dei dati che la CPU è progettata per elaborare in modo efficiente. E su x86, in modalità a 32 e 64 bit, sono interi a 32 bit. I valori a 64 bit non sono generalmente più costosi, ma indicano istruzioni più lunghe. Credo inoltre che almeno i Pentium 4 a 64 bit siano stati notevolmente più lenti con le operazioni a 64 bit, anche se su CPU recenti, quella parte non dovrebbe essere un problema. (Ma la dimensione dell'istruzione potrebbe essere ancora)
Più piccoli dei valori a 32 bit sono leggermente più sorprendenti. Sì, ci sono meno dati da trasferire, il che è buono, ma la CPU continua a prendere 32 byte alla volta. Il che significa che deve mascherare parte del valore, quindi questi diventano ancora più lenti.
Interessante domanda – juan