当前位置:  开发笔记 > 编程语言 > 正文

在列表中查找()与枚举

如何解决《在列表中查找()与枚举》经验,为你挑选了1个好方法。

我正在使用代码库,其中列表需要经常搜索单个元素.

使用Predicate和Find()比在List上手动执行枚举更快吗?

例如:

string needle = "example";
FooObj result = _list.Find(delegate(FooObj foo) {
    return foo.Name == needle;
});

string needle = "example";
foreach (FooObj foo in _list)
{
    if (foo.Name == needle)
        return foo;
}

虽然它们在功能上是等同的,但它们在性能方面是否相同?



1> JaredPar..:

它们在性能上并不相同.Find()方法需要为列表中的每个项调用一个方法(在本例中为委托).与内联比较相比,方法调用不是免费的并且相对昂贵.foreach版本不需要为每个对象调用额外的方法.

话虽这么说,在我实际分析我的代码并发现这是一个问题之前,我不会根据性能选择其中一个.我还没有发现这个场景的开销对于我编写的代码来说都是一个"热门路径"问题,而且我在Find和其他类似方法中使用了这个模式.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有