misc.log

日常茶飯事とお仕事と

64bit環境での整数型の選択

忘れないようにメモ。

以下、研修で出した話。

.NET Frameworkで登場する整数型は、

  • int …… 32bit 符号付き整数
  • long …… 64bit 符号付き整数

です。CPUとWindowsなどが64bitなら、64bit整数を使った方がいいのかな?と思いそうなところですが、実際の世の中のプログラムを見ても大抵32bit整数が選択されています。これはなんでだろう?というのを少し調べてみた結果です。

teratail.com

これはC++という言語の例ですが、データサイズと処理するコンピューターのbit数での速度について議論されています。その中で、Intel社の情報として下記の文言が登場しています。

アセンブリー/コンパイラー・コーディング規則 63 (影響 H、一般性 M): 64 ビット・モードでは、64 ビット・データや追加レジスターへのアクセスに 64 ビット版の命令が必要な場合を除き、32 ビット版の命令を使うことでコードサイズを削減します。

どういうことかというと、64bitで動くCPUも「特に64bitが必要なケース」以外では32bitの軽量カップでデータを入れたり出したりしてる、ということです。なので、普通の計算で使うデータはなんであれ32bit単位で処理されるので、現在のプログラミング言語では32bitのデータが一番効率よいという結論になるようです。