質問: Java入門書を見ていたら、次のような記述がありました。 > > 最近のコンピュータは多くのメモリを搭載しているため、これら4つの型を厳密に使い分ける必要があるケースはまれです。また、`short` や `byte` より `int` のほうが高速に処理できるコンピュータも多いので、 **整数を代入したい場合、通常は `int` 型** を使えば問題ありません。 > > > 何故shortやbyteなどの確保する記憶領域が少ないものの方が低速な処理になるという事が起こるのでしょうか? 何らかの最適化を行っているのでしょうが、直感とは反するので気になりました。 また、これはJavaのみの話ではなく他の言語でも同様なのでしょうか?(c言語など)
回答: 演算の面でいうと 32bit CPU は 32bit の演算のみができるものが多い(というかほとんど)で、つまり 16/8 bit の演算命令は無いわけです。 `short` や `byte` に対して演算を行う場合、結果を元の型つまり `short` や `byte` に収めるための命令が余計に生成されることになり性能が低下します。 (x86 は 16/8 bit の演算ができますし、数も多く出ていますが、互換性を維持するためにトランジスタ数が減らせなくてコストも高止まりしています。これが標準とは思わないほうが良い)