小智 25
"更好"是一个主观术语,但某些整数在某些平台上更具性能.
例如,在32位计算机(由32位平台和Win32等术语引用)中,CPU被优化为一次处理32位值,32指的是CPU可以消耗的位数或者在一个循环中生产.(这是一个非常简单的解释,但它得到了一般的想法).
在64位计算机中(最新的AMD和Intel处理器属于此类别),CPU经过优化,可以一次处理64位值.
因此,在32位平台上,加载到32位地址的16位整数需要将16位清零,以便CPU可以对其进行操作; 32位整数可以立即使用而无需任何更改,并且需要在两个或更多CPU周期中操作64位整数(一次用于低32位,然后再用于高32位) .
相反,在64位平台上,16位整数需要将48位归零,32位整数需要将32位归零,并且可以立即操作64位整数.
每个平台和CPU具有"天然"位岬(如32或64),而这通常限制了一些可以由CPU访问的其他资源(例如,32位处理器的3GB/4GB存储器限制).80386处理器系列(以及后来的x86)处理器使32位成为常态,但现在像AMD和英特尔这样的公司目前正在制造64位标准.
要回答第一个问题,16位与32位与64位整数的使用取决于它所使用的上下文.因此,你说真的不能说一个人比另一个好.但是,根据情况,优选使用一个在另一个上.考虑这个例子.假设您拥有一个拥有1000万用户的数据库,并且您希望存储他们出生的那一年.如果您使用64位整数在数据库中创建一个字段,那么您已经耗尽了80兆字节的存储空间; 然而,如果您使用16位字段,则只会使用20兆字节的存储空间.你可以在这里使用16位字段,因为人们出生的年份小于最大的16位数.换句话说,1980年,1990年,1991年<65535,假设你的领域是无符号的.总而言之,这取决于具体情况.我希望这有帮助.
一个简单的答案是使用您知道的最小的值,对于它将包含的可能值范围是安全的。
如果您知道可能的值被限制为小于最大长度的 16 位整数(例如对应于一年中哪一天的值 - 始终 <= 366),则使用它。如果您不确定(例如,可以有任意行数的数据库中表的记录 ID),则根据您的判断使用 Int32 或 Int64。
其他可能会让您更好地了解性能优势,具体取决于您使用的编程语言,但较小的类型使用较少的内存,因此如果您不需要更大的内存,则“更好”使用。
仅供参考,16 位整数意味着有 2^16 个可能的值 - 通常表示为 0 到 65,535 之间。32 位值的范围从 0 到 2^32 - 1,即超过 42.9 亿个值。
这个问题在 32 位 CPU 上,“整数”类型是否比“短”类型更有效?可能会添加一些更好的信息。