何がより高速で、速度を達成するために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();
Dictアプローチの欠点は、もちろん、これにはメモリ内のより多くのスペース、書き込むためのより多くのコード、あまりエレガントではないなどが必要になることです(ただし、これのほとんどは議論の余地があります)。それが要因ではないと仮定します。私は最初のアプローチを取るべきですか?
結論として、上記のLinqアプローチの複雑さが実際にO(n)であるかどうかを確認したいと思いますが、それよりも優れているかどうかはわかりません。