基元类型性能



我想知道不同基元类型的性能,主要是在 C# 中。现在,我意识到这并不完全是一个与语言相关的概念,因为机器针对处理类型进行了优化。

我读了以下两个问题:

  • .NET 中字节与整数的性能
  • 为什么我应该在 C# 中使用 int 而不是字节或短

不过,我需要澄清一些。

我知道在 32 位机器上,intshortbyte 都快,因为int是该平台的本机。但是,在 64 位系统上会发生什么?在性能方面,使用long而不是int更好吗?

另外,浮点类型会发生什么情况?doublefloat好吗?

答案可能是也可能不是特定于语言的。我认为在这个问题上,不同语言没有太多差异。但是,如果有,最好解释一下原因。

实际上,在大多数情况下,您将在小于机器架构的任何内容(即 int、short、32 位字节)中获得相同的性能,因为内部代码将只使用 32 位值来处理它们。

这同样适用于 64 位系统,没有理由不使用 int(因为它们将以与 64 位上的长速度相同的速度运行,比 32 位上的长速度更快),除非您需要额外的范围。如果你考虑一下 - 64位系统必须快速运行32位代码,否则没有人会进行转换。

较小的尺寸仅在将基元的多个副本打包到数组等结构中使用。在那里,您确实会从解压缩它们中获得一点减速,但在大多数情况下,这将通过更好的缓存/内存一致性等因素来弥补。

最新更新