它在阅读70至536份培训材料时指出:
运行时优化32位整数类型(Int32)的性能,因此将这些类型用于计数器和其他经常访问的整数变量。
这是否仅适用于32位环境?Int64是在64位环境中接管,还是Int32仍然是更好的选择?
发布于 2009-02-10 00:48:03
这是个有趣的说法。运行时与它没有多大关系。CPU是为处理32位整数而设计的,这就是为什么它们是最有效使用的。
在64位环境中,它再次依赖于CPU.然而,至少在x86 CPU上(据我所知,这是.NET运行的唯一地方),32位整数仍然是默认的。寄存器已经被简单地扩展,这样它们就可以适应64位值。但是32仍然是默认的。
所以更喜欢32位整数,即使是在64位模式下。
编辑:“默认”可能不是正确的词。CPU只支持许多指令,这些指令定义了哪些数据类型可以处理,哪些不能处理。这里没有“默认”。然而,通常有一个数据大小,CPU是为了有效地处理。在x86上,在32位和64位模式下,也就是32位整数.64位值通常不是更昂贵,但它们确实意味着更长的指令。我还相信,至少64位能力的奔腾4在64位操作时会慢得多,尽管在最近的CPU上,这个部分不应该成为一个问题。(但指令大小可能仍然是)
小于32位的数值更令人惊讶。是的,需要传输的数据较少,这是很好的,但CPU仍然一次捕获32字节。这意味着它必须掩盖部分值,因此这些值变得更慢。
发布于 2009-02-11 19:56:08
Scott今天在他的博客上发表了一篇文章,讨论了32位和64位托管代码之间的差异。总之,基本上只有指针改变大小,整数仍然是32位。
您可以找到post 这里。
发布于 2009-02-10 00:47:52
除非您计划将值超过20亿,否则使用整数值。没有理由使用额外的空间来获得额外的绩效收益。
与这条线上的其他人可能说的相反,在你衡量这样一件小事的好处之前,它只是一种残酷的利益。
https://stackoverflow.com/questions/530690
复制相似问题