C#里面有常用的字典Dictionary和線程安全的字典ConcurrentDictionary,用法幾乎一致,差別就不說了。
其中經常做Key是否存在的判斷。通常有兩種:
1.dictionary.Keys.Contains(key)
2.dictionary.ContainsKey(key)
今天就遇到了巨坑的。在做一個單詞重復數量統計,用字典統計很方便,幾千個文件合並統計,用了多線程就用了多線程安全的ConcurrentDictionary。
當我實現算法后,然后跑一個統計有一百多M的內容進行統計。恩,一開始巨慢!!找不到原因,算法因為也不復雜就判斷重復然后計數。
叫同事幫我看下哪里問題,然后他說判斷字典用ContainsKey吧,會快點,反正都試一下吧。
結果這哪是快一點???原來感覺需要跑半小時以上,而且越后面越慢。。。然后換成了ContainsKey來做判斷,兩秒鍾就完了!我擦。。。效率相差竟然如此之大
僅以此紀念踩過的坑,真的。
后面有時間單獨研究一下為什么
