使用小数据类型(例如short而不是int)是否会减少内存使用量?

the*_*kip 16 c# types memory-management short

我的问题基本上是关于C#编译器如何处理小数据类型的内存分配.我知道例如像add这样的运算符是在int上定义的而不是在short上定义的,因此计算将被执行,好像short是int成员一样.

假设如下:

  • 没有业务逻辑/验证逻辑与短数据类型的选择相关联
  • 我们没有对不安全的代码做任何事情

是否尽可能使用短数据类型会减少应用程序的内存占用量,是否建议这样做?或者使用short等不值得花费,因为编译器例如分配int32的完整内存ammount并在进行算术时添加额外的强制转换.

任何关于假定的运行时性能影响的链接都将非常感激.

相关问题:

我为什么要在C#中使用int而不是字节或short

整数蓝色,短+ +短问题

Flo*_*her 10

从仅存储器的角度来看,使用short而不是int更好.原因很简单,short变量只需要int 内存中变量大小的一半.CLR不会扩展shortint内存中.

然而,这种减少的内存消耗可能并且可能会显着降低应用程序的运行时性能.所有现代CPU的32位数字比16位数字表现更好.此外,在许多情况下,CLR将不得不之间进行转换short,并int当如调用该方法需要int的参数.在采用这种方式之前,您还需要考虑许多其他性能因素.

我只会在应用程序的非常专用的位置和模块中更改此项,并且只有在您确实遇到可测量的内存不足时才会更改.

在某些情况下,您当然int可以short轻松切换到不影响性能的情况.一个例子是一个巨大的阵列,int所有这些也适合shorts.