在C++中使用'short'

use*_*312 8 c++

为什么对于任何数字输入我们更喜欢int而不是short,即使输入的整数非常少.

short的大小在我的x86上是2个字节,int是4个字节,不应该比int更好更快地分配吗?

或者我说错了没用?

Gre*_*ill 18

处理"原生"整数时,CPU通常最快.因此,即使a short可能小于a int,int也可能更接近CPU中寄存器的原始大小,因此可能是两者中效率最高的.

在典型的32位CPU架构中,要加载32位值,需要一个总线周期来加载所有位.加载一个16位值需要一个总线周期来加载这些位,再加上其中一半位(这个操作可能仍然发生在一个总线周期内).

  • 'short'可能用于文件格式和网络协议,您可以在其中关注您正在使用的空间. (8认同)

Mat*_*hew 13

如果你在内存中保留这么多(例如,在一个大型数组中),那么 16位短路是有意义的,即大小减小50%可以显着减少内存开销.正如Greg正确指出的那样,它们并不比现代处理器上的32位整数快.