.NET BCL API或Framework方法的时间复杂性

时间:2011-04-06 07:57:44

标签: c# .net algorithm complexity-theory

有没有办法知道.NET预定义方法的确切时间复杂度。就像我想知道

的复杂性一样
String.Contains() 

 Hashtable.ContainsKey()

Microsoft是否共享此信息?

5 个答案:

答案 0 :(得分:3)

是的,在MSDN中:)

  1. Hashtable.ContainsKey Method
  2.   

    此方法是O(1)操作。

    1. Enumerable.Contains Method (IEnumerable, TSource)
    2.   

      如果源的类型实现   ICollection,包含方法   该实现被调用   获得结果。否则,这个   方法确定是否来源   包含指定的元素。

           

      枚举一旦终止,就会终止   匹配元素被找到。

      因此,对于String,它将是O(n)。

答案 1 :(得分:1)

有几篇帖子提到了Reflector,这是一个很好的工具但不再免费。提供类似服务的免费工具是ILSpy,如果您不想购买反射器,请查看。

答案 2 :(得分:0)

一种可能性是使用像Reflector这样的工具,并亲自查看方法的实现。然后,您应该能够确定大多数方法的复杂性(如果它们依赖于许多其他方法,那么跟踪所有调用计算的方法可能很麻烦。)

我认为没有一个页面明确列出了所有方法的复杂性。

答案 3 :(得分:0)

你可以使用Reflector和Code Metrics插件轻松找到它。

答案 4 :(得分:0)

反射器是一个显而易见的选择,可以找到您需要的信息,如其他答案所示。然而,这不再是一个免费的工具,虽然不是太昂贵。

免费的替代方案是查看.NET框架库的源代码。 Scott Guthrie has a post提供了访问和调试源代码的一些信息和链接。