創建一個串列并檢查它是否包含一個值而不是執行多個 or 陳述句會慢多少?
List<char> validvalues = new List<char>
{
'a', 'b', 'c', 'd'
};
if (validvalues.Contains(value))
{
//do thing
}
相對
if (value == 'a' || value == 'b' || value == 'c' || value == 'd')
{
//do thing
}
有沒有更好的方法來實作我所缺少的?
編輯:首先,我為我的愚蠢問題道歉。為了澄清這是對我的用例的極度簡化,它涉及檢查它與 16 個字符,然后是 32 個字符,然后是 48 個字符等等......最多 256 個字符。我想我可以一次將 16 個字符附加到已經存在的串列中,并使用相同的串列進行多次檢查。顯然,創建一個串列并檢查它會更慢我真的在問這會是一個多大的問題。
uj5u.com熱心網友回復:
使用串列可能會稍微慢一些,因為它必須創建一個結構,迭代其內容等。or可能會直接編譯為 IL,與常量值進行比較。但是,作為交換,您可以更靈活地在運行時更改串列。但是,您可以使用Set,顯著改善查找時間以換取稍微昂貴的設定時間。因此,這取決于串列的大小以及您進行的比較次數。
也就是說,確定知道的唯一方法是同時嘗試并測量它。我懷疑除非您執行這些任務數百萬次,否則差異將是微不足道的。
此外,像這樣簡單的事情不太可能成為任何應用程式整體的重大瓶頸。如果應用程式有任何型別的 I/O,那么在相對較小的集合中查找值可能更可能成為瓶頸。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/399460.html
上一篇:根據條件獲取非na日期的差異
