short と int の計算速度

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
詩織

short と int の計算速度

#1

投稿記事 by 詩織 » 5年前

インテル係のCPU体系の場合、一般的な結論として、
原理的に、primitive data type としてのintを利用して計算するほうがshort型のデータを利用して計算するより
速いでしょうか。

宜しくお願いします

box
記事: 1737
登録日時: 8年前

Re: short と int の計算速度

#2

投稿記事 by box » 5年前

検証するためのコードを自分で書いてみるとか…。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
みけCAT
記事: 6214
登録日時: 8年前
住所: 千葉県
連絡を取る:

Re: short と int の計算速度

#3

投稿記事 by みけCAT » 5年前

言語が指定されておらず、「primitive data type」でググったときに目立ったのがJavaだったので、Javaの話と仮定します。
Javaのint型は32ビット、short型は16ビットです。
「インテル係のCPU」は「インテル製のCPU」の誤字であると仮定します。

ここで、例えばIntel 8086はインテル製のCPU(インテルが開発したCPU)です。
このCPUのレジスタは最大16ビットしかないので、32ビットのint型より16ビットのshort型の方が
自分で多倍長計算を実装しなくてもネイティブの整数演算命令で計算できるため、
intよりshort型のデータを利用して計算する方が速いと考えられます。

したがって、反例が考えられるので、「一般的な結論として、
原理的に、primitive data type としてのintを利用して計算するほうがshort型のデータを利用して計算するより
速い」というのは、間違いであると考えられます。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

詩織

Re: short と int の計算速度

#4

投稿記事 by 詩織 » 5年前

詩織でございます。
前回説明不足で申し訳ありません。
ここで「原理的に」、あるいは「一般論として」という表現は
データタイプがCPUのbit数と一致すれば、一番速いという定論があるかどうかという意味です。
例えば、64bitのCPUだと、もしlong long int が 64bitであって、int は32bitであれば、
言語は何であれ、必ずlong long intを利用して計算するほうはintを利用するより速いですね?

またどうぞ宜しくお願いします。

アバター
みけCAT
記事: 6214
登録日時: 8年前
住所: 千葉県
連絡を取る:

Re: short と int の計算速度

#5

投稿記事 by みけCAT » 5年前

無駄に大きなデータ型を用いると、無駄にメモリの広範囲にアクセスする必要が生じ、
その結果キャッシュに入らないデータの量が多くなるため、無駄に(キャッシュではなく)メモリ本体にアクセスする回数が増え、
計算が遅くなるかもしれません。

ただし、それとCPUの扱うデータサイズの一致による高速化の影響(あれば)のどっちが強いかは、私にはわかりません。
扱う問題にもよると思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Poco
記事: 161
登録日時: 9年前

Re: short と int の計算速度

#6

投稿記事 by Poco » 5年前

みけCAT さんが書きました: 言語が指定されておらず、「primitive data type」でググったときに目立ったのがJavaだったので、Javaの話と仮定します。
Javaのint型は32ビット、short型は16ビットです。
(略)
intよりshort型のデータを利用して計算する方が速いと考えられます。
Javaに関して言えば、short型をそのまま演算するバイトコードはありません。
必ずint型に拡張して演算しますので、int型の方が早いかと。

詩織

Re: short と int の計算速度

#7

投稿記事 by 詩織 » 5年前

なんとなく分かったような感じです。
皆さん有難うございました。

閉鎖

“C言語何でも質問掲示板” へ戻る