Array IndexOf的效能問題

2021-03-31 08:56:57 字數 755 閱讀 7776

array.indexof 是乙個在一維陣列中搜尋指定物件,並返回第乙個匹配項索引的「generic「(泛型)方法,正是因為是generic,所以就有一些效能上要注意的問題。

array.indexof 運算元組有三種不同的情況:

1.    如果是最小下標為0的陣列,並且陣列中的元素為以下型別:byte, sbyte, boolean, int16, uint16, char, int32, uint32, int64, uint64, single, double,則查詢將會在非託管的**下進行,速度回非常快,注意,查詢的時候回拆箱每個被找的值。

2..如果陣列中元素是引用型別,則我們可以利用object.equal方法比較陣列中的每個元素直到我們找到匹配的元素。

3.當陣列中的元素是其他的值型別,或者下限不為0,則查詢就象下面的**那樣:

for (int i = startindex; i < endindex; i++)

使用 getvalue方法的成本非常高,並且它還要裝箱每乙個我們查詢的值。我曾經做過乙個簡單的測試,在乙個自定義型別的陣列中,這時候直接用迴圈在陣列中查詢比用array.indexof要快上將近40倍.

有兩個值得注意的問題:

1.array.indexof 不支援在基本型別之間轉換,在下面的例子中,將會輸出-1

long list = new long[10];

for( int i=0;i<10;i++)

console.writeline(array.indexof(list,9));

效能測試需要關注的效能點

我們站在管理員的角度考慮需要關注的效能點 1 相應時間 2 伺服器資源使用情況是否合理 3 應用伺服器和資料庫資源使用是否合理 4 系統能否實現擴充套件 5 系統最多支援多少使用者訪問 系統最大業務處理量是多少 6 系統效能可能存在的瓶頸在 7 更換那些裝置可以提高效能 8 系統能否支援7 24小時...

mysql的效能優化 mysql效能優化

檢視安裝指令碼 select version 非互動式超時時間,如jdbc show global variables like wait timeout 互動式超時時間,如資料庫工具 show global variables like interactive timeout show sessi...

效能測試(一)效能測試的內容

效能測試的型別與劃分網上已經有了很多的定義,比如壓力測試,負載測試,容量測試這三個詞在網上能找到很多版本的定義,大家能夠大體理解就行了,以下內容也只是我個人按照我在實際工作中接觸到的來理解的 1 壓力測試 是在被測系統上不斷增加壓力,知道效能指標超過預定指標。2 負載測試 是指在被測系統上在一定飽和...