C# 基本类型性能
我想知道不同原语类型的性能,主要是在C#中。现在,我意识到这并不是严格意义上的语言相关概念,因为机器已经针对处理类型进行了优化 我看了以下两个问题:C# 基本类型性能,c#,performance,types,C#,Performance,Types,我想知道不同原语类型的性能,主要是在C#中。现在,我意识到这并不是严格意义上的语言相关概念,因为机器已经针对处理类型进行了优化 我看了以下两个问题: 然而,我需要一些澄清 我知道在32位机器上,int比short和byte都快,因为int是平台的本机代码。但是,在64位系统上会发生什么?就性能而言,使用long而不是int是否更好 另外,浮点类型会发生什么情况?double比float好吗 答案可能是特定语言的,也可能不是特定语言的。我认为在这个问题上,不同语言之间没有太多的差异。但是,
int
比short
和byte
都快,因为int
是平台的本机代码。但是,在64位系统上会发生什么?就性能而言,使用long
而不是int
是否更好
另外,浮点类型会发生什么情况?double
比float
好吗
答案可能是特定语言的,也可能不是特定语言的。我认为在这个问题上,不同语言之间没有太多的差异。但是,如果有,最好解释一下原因。实际上,在大多数情况下,在任何小于机器体系结构的情况下(即int、short、32位字节),您都可以获得相同的性能,因为代码在内部只使用32位值来处理它们 这同样适用于64位系统,除非您需要额外的范围,否则没有理由不使用int(因为它们的运行速度与64位上的long相同,比32位上的long快)。如果你想一想,64位系统必须快速运行32位代码,否则没有人会进行转换
较小的大小仅在将原语的多个副本打包到结构(如数组)中时使用。在这里,您确实会从解包中得到一个小的减速,但在大多数情况下,这将被更好的缓存/内存一致性等因素所补偿。是的,但是这种减速(忽略缓存)会发生在64位系统上的
int
上吗?更准确地说,long
是64位平台的本机版本,还是int
更适合使用?long和int在64位平台上的速度相似。请使用适合您的数据的代码。请不要编写考虑体系结构的生产代码,也不要在int
和long
之间切换。这会给你带来麻烦,我知道。这个问题纯粹是理论问题。我希望是,但你永远不知道!:)