Nhanh hơn và tôi nên hy sinh tiêu chuẩn LINQ để đạt được tốc độ (giả sử tra cứu từ điển thực sự nhanh hơn) là gì? Vì vậy, hãy để tôi giải thích:tra cứu từ điển (O (1)) vs LINQ nơi
Tôi đã điều sau đây:
List<Product> products = GetProductList();
tôi có nhu cầu tìm kiếm một sản phẩm dựa trên một số thuộc tính, ví dụ, số serial. đầu tiên tôi có thể tạo ra một từ điển, và sau đó cư nó như sau:
Dictionary<string, Product> dict = new Dictionary<string, Product>();
foreach(Product p in products)
{
dict.Add(p.serial, p);
}
Khi đó là thời gian để tìm một sản phẩm, tận dụng lợi thế của O (1) được cung cấp bởi nhìn lên từ điển:
string some_serial = ...;
try { Product p = dict[some_serial]; } catch(KeyNotFoundException) { }
Ngoài ra, sử dụng LINQ:
Product p = products.Where(p => p.serial.Equals(some_serial)).FirstOrDefault();
Hạn chế với cách tiếp cận Dict là tất nhiên điều này đòi hỏi nhiều không gian hơn trong bộ nhớ, nhiều mã để viết, ít thanh lịch, vv (mặc dù hầu hết trong số này là gây tranh cãi). Giả sử đó không phải là yếu tố. Tôi có nên sử dụng cách tiếp cận đầu tiên không?
Để kết luận, tôi muốn xác nhận xem mức độ phức tạp của phương pháp tiếp cận LINQ ở trên thực sự là O (n) và tôi không thấy nó có thể tốt hơn thế nào.
Đúng, tôi quên xem xét chi phí bổ sung cho từ điển. Cảm ơn. –
Nhưng nếu tôi sử dụng từ điển nhiều lần (nghĩa là 100 lần), không chỉ một lần? –