Sri*_*lan 4 .net generics predicate list
假设我们有一个Class1的通用列表,通常有给定会话的约100个对象.我想看看列表是否有特定的对象.ASP.NET 2.0允许我这样做:
Dim objResult as Class1 = objList.Find(objSearch)
Run Code Online (Sandbox Code Playgroud)
与传统的For循环相比,从性能角度来看,这种方法的速度如何?
如何随着列表长度的增加或减少而变化?
它与循环完全相同 - 这就是它在内部的作用.
如果您的列表已经排序并且您正在寻找特定值,那么您可能会使用BinarySearch- 但如果您考虑一下,如果您对谓词或数据的顺序一无所知,则必须仔细查看每个项目,直到找到匹配项.碰巧的Find是,指定返回列表中的第一个项目......所以它只是以明显的顺序查看.
这将与列表的大小成线性关系 - 即平均而言,搜索10倍大的列表将花费10倍的时间.当然,这取决于是否以及找到匹配的地方; 如果第一个项目在每种情况下匹配,无论列表有多大,它都会在同一时间完成:)
说实话,只有100个物体,听起来它不太可能成为瓶颈.