2013-07-14 72 views
-1

鉴于:BitConverter VS铸造差异

int onlyLastByteContainsValue = 35; 

下列哪项是更快,为什么?

byte valueInByte = BitConverter.GetBytes(onlyLastByteContainsValue)[3]; 

或者

byte valueInByte = (byte)onlyLastByteContainsValue; 

后续问题:是否有上述两个之间的其他区别?

+1

你为什么不配置文件,并找出哪些是自己的速度更快?除非编译器能够在第一种情况下做出一些疯狂的魔法,否则演员阵容应该会更快。 –

+0

我想知道为什么。让我重新提出这个问题。 – bytefire

回答

2

当然,中投会比较快,从我的分析,最多X5与优化关闭(甚至与优化moreso上)。

当然也有不同的事情怎么回事:

  • BitConverter语句分配尺寸为sizeof(int)一个数组,int值的所有字节填充它,然后索引数组检索只有一个字节。不用说,这是浪费资源。

  • 铸造检查指定值的byte的范围内(除非指定unchecked),以及注塑值到byte的至少显著字节。