Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基本类型性能_C#_Performance_Types - Fatal编程技术网

C# 基本类型性能

C# 基本类型性能,c#,performance,types,C#,Performance,Types,我想知道不同原语类型的性能,主要是在C#中。现在,我意识到这并不是严格意义上的语言相关概念,因为机器已经针对处理类型进行了优化 我看了以下两个问题: 然而,我需要一些澄清 我知道在32位机器上,int比short和byte都快,因为int是平台的本机代码。但是,在64位系统上会发生什么?就性能而言,使用long而不是int是否更好 另外,浮点类型会发生什么情况?double比float好吗 答案可能是特定语言的,也可能不是特定语言的。我认为在这个问题上,不同语言之间没有太多的差异。但是,

我想知道不同原语类型的性能,主要是在C#中。现在,我意识到这并不是严格意义上的语言相关概念,因为机器已经针对处理类型进行了优化

我看了以下两个问题:

然而,我需要一些澄清

我知道在32位机器上,
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
之间切换。这会给你带来麻烦,我知道。这个问题纯粹是理论问题。我希望是,但你永远不知道!:)