|
分類:[.NET 全般]
VB.NETを使って、
Byte、Short、Integer、Long、Single、Doubleに関して
bbb = aaa * aaa
という計算を1,000,000,000回Forループで繰り返した計算時間を32と64ビットで比較を行いました。
以下が結果です。
左が32ビット、右が64ビット
Byte 2.2秒 2.3秒
Short 2.2秒 2.3秒
Integer 2.2秒 2.3秒
Long 9.1秒 2.3秒
Single 1.8秒 2.4秒
Double 1.8秒 2.3秒
32ビットの場合、IntegerやSingleなどの4バイトに特化されており、
それ以下のByteやShortはIntegerが内包したような計算になっている
という情報をどこかで見かけました。
そのため、Byte、Short、Integerで速度差が見られず
Longだけが遅くなりました。
64ビットの場合、LongやDoubleなどの8バイトに特化されているため、
Byte、Short、Integer、Longで速度差が見られない結果となりました。
これは理解できます。
一方で、
32ビットでSingleとDoubleに速度差が見られなかった理由と、
Byte、Short、Integer、Longなどの整数よりも
Single、Doubleなどの浮動小数点の方がなぜか高速になった理由を教えていただけないでしょうか?
それと、Long型を除いて
32よりも64ビット型の方が遅くなる結果となっていますが、
これはなぜなのでしょうか?
一般的に32と64ビット型でプログラムの実行速度に違いが見られないか
若干64ビットの方が速くなると言われますが
64ビット型で32と同じ速度にする方法があれば教えてください。
|