List <t>有什么好处。找对替代品?</t>

时间:2009-01-21 11:01:02

标签: c# .net performance

最近我使用谓词来描述搜索逻辑并将其传递给几个列表的Find方法。

foreach (IHiscoreBarItemView item in _view.HiscoreItems)
{
    Predicate<Hiscore> matchOfHiscoreName = 
        (h) => h.Information.Name.Equals(item.HiscoreName);

    var current = player.Hiscores.Find(matchOfHiscoreName);
    item.GetLogicEngine().ForceSetHiscoreValue(current as Skill);

    var goal = player.Goals.Find(matchOfHiscoreName);
    item.GetLogicEngine().ForceSetGoalHiscoreValue(goal as Skill);
}

除了“少代码”之外,使用上述方法替代替代方案是否有任何好处。

我对表现特别感兴趣。

由于

1 个答案:

答案 0 :(得分:12)

查找使用LINQ的好处:它在.NET 2.0中可用 LINQ over Find的好处:与其他序列的一致性;查询表达式语法等

查找BinarySearch的好处:列表不必排序,您只需要进行相等比较 BinarySearch优于Find:BinarySearch是O(log n);找到是O(n)

查找foreach循环的好处:紧凑而不重复自己 获取foreach循环的好处:查找:您要执行的任何其他自定义处理

其中,只有Find vs BinarySearch有任何真正的性能差异。当然,如果您可以从List<T>更改为Dictionary<TKey,TValue>,那么查找元素将会摊销O(1)......