我想知道主要在C#中不同原始类型的性能.现在,我意识到这并不是严格意义上与语言相关的概念,因为该机器针对处理类型进行了优化.
我已阅读以下两个问题:
> performance of byte vs. int in .NET
> Why should I use int instead of a byte or short in C#
不过,我需要澄清一下.
我知道在32位计算机上,int比short和byte都快,因为int是平台固有的.但是,在64位系统上会发生什么?在性能方面,使用long而不是int更好吗?
另外,浮点类型会怎样?比浮点数好吗?
答案可能是特定语言,也可能不是特定语言.我认为在此问题上不同语言的差异不大.但是,如果有的话,对原因进行解释将是很好的.
解决方法:
实际上,在大多数情况下,在任何比您的计算机体系结构小的情况下(例如int,short,32位字节),您都可以获得相同的性能,因为在内部,代码将仅使用32位值来处理它们.
在64位系统上也是如此,除非您需要额外的范围,否则没有理由不使用int(因为它们将以64位长整数以相同的速度运行,比32位长整数以更快的速度运行).如果您考虑一下-64位系统必须快速运行32位代码,否则没人会进行过渡.
仅当将原语的多个副本打包到诸如数组之类的结构中时,才使用较小的大小.在那里,解压缩确实会带来一点点减慢,但是在大多数情况下,这可以通过更好的缓存/内存一致性等方式得到补偿.