我想知道不同原始类型的性能,主要是在C#中。现在,我意识到这并不是严格意义上的语言,因为机器已针对处理类型进行了优化。
我已阅读以下两个问题:
然而,我需要做一些澄清。
我知道在32位计算机上,int
比short
和byte
都快,因为int
是平台本机的。{1}}。但是,在64位系统上会发生什么?使用long
代替int
?
此外,浮点类型会发生什么? double
比float
更好吗?
答案可能是也可能不是语言特定的。我假设不同语言在这个问题上没有太多差异。但是,如果有,那么解释原因会很好。
答案 0 :(得分:3)
实际上在大多数情况下,你会在比你的机器架构更小的任何东西(即int,short,32位字节)上获得相同的性能,因为内部代码只使用32位值来处理它们。
同样适用于64位系统,没有理由不使用int(因为它们将以与64位长的运行速度相同,比32位长的运行速度更快),除非您需要额外的范围。如果你考虑一下 - 64位系统必须快速运行32位代码,否则没有人会进行转换。
较小的尺寸仅在将基元的多个副本打包到诸如数组的结构中时使用。在那里你可以通过解压缩来获得一个小的减速,但在大多数情况下,这将通过更好的缓存/内存一致性等因素得到补偿。