什麼是更快,我應該犧牲Linq標準以實現速度(假設字典查找確實更快)?因此,讓我闡述:字典查詢(O(1))與Linq其中
我有以下幾點:
List<Product> products = GetProductList();
我有一個需要搜索基於一些屬性的產品,例如,序列號。我可以先創建一個字典,然後填充它如下:
Dictionary<string, Product> dict = new Dictionary<string, Product>();
foreach(Product p in products)
{
dict.Add(p.serial, p);
}
當它的時間來找到一種產品,需要的O的優勢(1)通過字典查找提供:
string some_serial = ...;
try { Product p = dict[some_serial]; } catch(KeyNotFoundException) { }
可替代地,使用LINQ:
Product p = products.Where(p => p.serial.Equals(some_serial)).FirstOrDefault();
與字典方法的缺點是,當然這需要在存儲器中更多的空間,更多的代碼編寫,少優雅等(雖然大部分是有爭議的)。假設這是非因素。我應該採取第一種方法嗎?最後,我想確認一下,上述Linq方法的複雜性是否確實是O(n),我不知道它如何能比這更好。
是的,我忘了考慮添加到字典的開銷。謝謝。 –
但是如果我多次使用詞典(即100次)而不是一次? –