2013-07-14 69 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的至少顯著字節。