2017-06-16 63 views
0

給定一個數組ArrayEx,這兩個等價嗎?當我試圖將包含多個數組的複雜對象映射到我的模型時,性能是否有所不同?ArrayName.First()和ArrayName [0]之間的性能差異

ArrayEx[0] 
ArrayEx.First() 
+0

問題是一個近似重複https://stackoverflow.com/questions/6165462/difference-between-list-first-list-elementat0-and-list0 – hatchet

+0

也相關https://stackoverflow.com/questions/33544269/c-sharp-first-vs-0 – hatchet

+3

要準確測量是相當困難的,但請指望First()比簡單索引慢大約一個數量級。那是* not *,因爲First()很慢,這是因爲數組索引非常非常快。無論你如何處理你檢索的數據,都很可能導致不可觀察的差異。 –

回答

2

第二個是用於IEnumerable<T>型這使得它更通用的,其中第一個是隻是一個簡單的索引的擴展方法。

.First()應該會慢一點。

+0

雖然只有一點點慢。 '第一個'檢查源是否是'IList',如果是,則執行'[0]'。 – hatchet

+0

@hatchet是真的,它幾乎可以忽略不計的性能差異。 – Deadzone

+1

@hatchet的確如此,但是通過接口訪問索引器(這意味着虛擬方法調用)要比直接訪問數組索引器(爲此有一個IL指令)慢得多。在大多數情況下,它並不重要,但對於性能關鍵代碼很重要。 –

相關問題