なぜ int は short や byte より高速に処理できる場合があるのか


Java入門書を見ていたら、次のような記述がありました。

> 最近のコンピュータは多くのメモリを搭載しているため、これら4つの型を厳密に使い分ける必要があるケースはまれです。また、`short` や `byte`
> より `int` のほうが高速に処理できるコンピュータも多いので、 **整数を代入したい場合、通常は`int` 型** を使えば問題ありません。

何故shortやbyteなどの確保する記憶領域が少ないものの方が低速な処理になるという事が起こるのでしょうか？

何らかの最適化を行っているのでしょうが、直感とは反するので気になりました。

また、これはJavaのみの話ではなく他の言語でも同様なのでしょうか？(c言語など)




実際の速度を決定づけているのはJavaやCなどの言語ではなく、演算を実行するプロセッサーです。プロセッサーは表面上は8bit /
16bit演算をサポートしている場合もありますが、それでも内部的には32bitなどより大きな値で演算を行った上で値を切り詰めている場合があります。32bit
/ 64bitプロセッサーが一般的となっている現在では、`int`などで演算を行うのが無難です。  
その上で、大量の値を演算する場合は、不要なメモリアクセスを削減する目的で`char`や`short`などの適切な最小サイズを選択するべきですが、そうではない場合であれば、やはり`int`で十分です。

[x64では32ビット整数と64ビット整数の演算はどちらが高速？](https://ja.stackoverflow.com/q/22346/4236)も参考にしてください。特にEgtraさんがコメントされていますが、x86
/ x64プロセッサーでは16bit演算は8bit / 32bit演算に比べて少しだけ効率が悪いです。  
またC言語においては`int_fast8_t`、`int_fast16_t`等、 **8bit / 16bit演算を高速に行えるデータ型**
という概念が存在します。（もっとも、x86 / x64 Linuxでは不適切で実際にはあまり高速ではないという欠点がありますが…。）

