有什麼方法可以知道.NET預定義方法的確切時間複雜度。就像如果我想知道的.NET BCL API或框架方法的時間複雜度
String.Contains()
或
Hashtable.ContainsKey()
複雜難道微軟共享這些信息?
有什麼方法可以知道.NET預定義方法的確切時間複雜度。就像如果我想知道的.NET BCL API或框架方法的時間複雜度
String.Contains()
或
Hashtable.ContainsKey()
複雜難道微軟共享這些信息?
是的,在MSDN :)
此方法是O(1)的操作。
如果源的類型實現 ICollection的,則包含在 方法實現被調用,以獲得 結果。否則,這個 方法確定源 是否包含指定的元素。
只要找到匹配元素 就終止枚舉。
因此,對於字符串,它將是O(n)。
一種可能性是使用像Reflector這樣的工具,並且自己查看方法的實現。然後,您應該能夠確定大多數方法的複雜性(如果它們依賴於許多其他方法,則可以通過所有調用進行計算來追蹤您的方式)。
我不認爲有一個頁面明確列出了所有方法的複雜性。
你可以使用Reflector和Code Metrics插件很容易地找到你自己。
反射器是一個顯而易見的選擇,可以在其他答案中突出顯示所需的信息。但是,這不再是免費的工具,儘管不是太昂貴。
一個免費的替代方法是查看.NET框架庫的源代碼。 Scott Guthrie has a post它提供了一些信息和鏈接來訪問和調試源代碼。
有幾篇文章提到了Reflector,這是一個很好的工具,但不再免費。提供類似服務的免費工具是ILSpy,值得一看,如果你不想購買反射器。
感謝您的信息。 – 2011-04-07 22:17:19