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

| 我的问题基本上是关于C#编译器如何处理小数据类型的内存分配。我确实知道,例如add之类的运算符是在int而不是short上定义的,因此计算将像short是int成员一样执行。 假设以下内容: 没有与选择short作为数据类型相关的业务逻辑/验证逻辑 我们不会使用不安全的代码做任何事情 使用short数据类型是否会减少我的应用程序的内存占用量,是否建议这样做?或者使用short之类的方法不值得付出努力,例如,编译器会分配int32的全部内存量,并在进行算术运算时添加其他强制类型转换。 任何有关假定的运行时性能影响的链接将不胜感激。 相关问题: 为什么我应该在C#中使用int而不是字节或short 整数加总布鲁斯,短+ =短问题     
已邀请:

bab

        从仅内存的角度来看,使用“ 0”代替“ 1”会更好。原因很简单,一个“ 0”变量仅需要内存中一个“ 1”变量的一半。 CLR不会在内存中将“ 0”扩展为“ 1”。 但是,这种减少的内存消耗可能并且可能会大大降低应用程序的运行时性能。与32位数字相比,所有现代CPU的性能确实要好于16位数字。另外,在许多情况下,例如当CLR时,CLR必须在
short
int
之间转换。调用带有“ 1”个参数的方法。在采用这种方法之前,还必须考虑许多其他性能方面的考虑。 仅当您确实遇到可测量的内存短缺时,我才会在应用程序的专用位置和模块上更改此设置。 在某些情况下,您当然可以轻松地从
int
切换到
short
,而不会影响性能。一个例子是由array1组成的庞大数组,所有这些数组也都适合to0。     
        仅在程序中有非常大的此类数组(或像ѭ13on这样的数组上构建的集合)或这些数组组成的打包结构数组时,才在内存使用方面有意义。 “大”是指这些阵列的总内存占工作集的很大一部分,占可用内存的很大一部分。至于可取性,我敢冒险使用短类型,除非您的程序所操作的数据是用“ 0”等显式指定的,或者数据量达到千兆字节,否则不建议使用。     
        简而言之-是的。但是,您还应该注意内存对齐。您可能会在C#中找到Mastering C#结构和类的内存对齐方式?有用     
        取决于您使用短裤的目的。另外,您是否分配了很多与内存占用量有关的变量? 如果要在移动设备或内存受限的设备上使用此程序,则可能会感到担心。但是,当今大多数计算机至少运行1-2 gb的内存,并且具有相当不错的双核处理器。另外,当今大多数移动设备正在成为野兽微型计算机。如果您声明太多以至于该类型的机器将开始失效,那么您的代码中已经存在问题。 但是,针对这个问题。如果您只需要2字节变量来声明很多4字节变量来填充它们,那么在内存受限的机器中就很重要了,那么您应该使用缩写。 如果执行复杂的计算,则需求平方根等或高值计算。那么您应该使用更多字节的变量,这样就不会冒丢失任何数据的风险。只需在需要时声明需要的内容即可。如果您担心内存限制,请在将其完成后归零以确保C#将其清理干净。     
        对于机器语言,在注册表级别,我认为最好与注册表大小保持一致,因为大多数移动和算术功能都是在注册表边界完成的。如果计算机设置了32位注册表,则最好与32位对齐。如果计算机具有用于I / O操作的16位注册表,则优良作法是与16位对齐以减少移动内容的操作数。     

要回复问题请先登录注册