我有一個多線程的C#應用程序,其中核心邏輯位於Timer.Elapsed
事件處理程序中。事件處理程序包含最多執行n * n = 5 * 5 = 25 times
的2個循環,其中包括2個for
。C#應用程序 - 減少CPU使用率
該應用程序在我的電腦上運行良好。我運行VS 2010 Profiler
針對應用程序和CPU使用率平均值爲20%。
該公司測試儀說,他的電腦上這個跳轉到和他的電腦上介於50%100%。這對他造成了性能問題。
- 有什麼我可以做的補救措施呢?
- 高CPU使用率究竟意味着什麼?
- 這會影響他的電腦嗎?
- 是否可以告訴應用程序只使用
X
的數量 CPU?
任何幫助,將不勝感激。
循環執行的次數僅意味着上下文中執行的內容。如果執行25次昂貴的操作可能是一個大問題。如果你總結到25就沒有關係。 – rerun 2010-11-08 09:31:05
你的定時器多久開一次?而且,在再次啓動計時器之前,您是否等待完成操作?或者,您是否繼續開始循環啓動循環,無論前一個循環是否完成? – 2010-11-08 14:37:16
定時器每秒執行一次。在定時器事件處理程序中,我停止了第一行代碼中的定時器,並在最後一行代碼中重新啓動它。實際上,這隻會在事件之間產生1秒的延遲。在啓動和停止計時器之間的代碼,在一個ConcurrentDictionary的內存中進行一些計算,這可以大大增加。計算非常簡單,但基於大量的數據。在這個事件處理程序中沒有與UI發生交互,因此我沒有使用DispatcherTimer和BackgroundWorker。 ConcurrentDictionary由各種事件更新。 – c0D3l0g1c 2010-11-09 05:59:06