我有一个.NET线程,分配给核心#7。线程功能在300ms内触发一次。最初执行一个呼叫大约需要20-30毫秒。但这段时间逐渐增加,在拨打2,52,000个电话后变得超过150毫秒。
我也注意到核心#7的使用率从10%开始。当线程函数的调用次数达到2,52,000时,核心#7的处理器使用率变为大约60%。当我停止触发线程功能时,处理器使用率变为0%。但是当我再次开始触发时,核心使用率从60%开始(而不是从0%开始)并再次逐渐增加。
我还注意到应用程序没有内存泄漏。
在我的线程函数中,我将两个Dictionaries的元素组合在一起,并将它添加到foreach循环中的另一个字典中。字典中的元素数量始终为45。
我希望这个应用程序全天候运行。请让我知道一些使处理器使用率保持不变的提示。
答案 0 :(得分:4)
将项目添加到Dictionary
时,可能需要增加容量。你的字典会继续永远增长吗?
来自MSDN:
如果Count小于容量,则此方法接近O(1)操作。如果必须增加容量以容纳新元素,则此方法将成为O(n)操作,其中n为Count。