我有一個程序,加載系統的事件日誌到Hastable使用。問題是它利用了100%的CPU。使用API調用降低使用率的最佳解決方案是什麼?如何在加載事件日誌時降低CPU利用率?
Hashtable currentLog = (Hashtable)_logs[l.Log];
foreach (EventLogEntry e in l.Entries)
{
if (_lastRun <= e.TimeWritten.ToUniversalTime())
{
if (_verboseOutput)
{
Logger.TraceWrite(String.Format(
"Source={0}, EventId={1}, Date/Time={2}, Message={3}",
e.Source,
e.EventID,
e.TimeWritten,
e.Message));
}
string key = GetEventKey(e);
if (currentLog[key] == null)
{
currentLog[key] = e;
}
}
}
當你說「100%CPU」時,你的意思是「100%** core **」嗎?無論哪種情況,爲什麼這是一個問題?你真的想說這需要很長時間嗎?如果是這樣,多少時間? –
100%的CPU。當一個事件使用100%的CPU時它健康嗎? – Rawanee
對於**完全相同的**處理量,「100%」與「50%」使用率是「健康的」,因爲這意味着您將以兩倍的速度完成。我不太清楚的是,除非使用單核CPU,否則如何從上述代碼中獲得100%的CPU使用率。在我的四核上,CPU使用率只有25%(即100%的核心使用),以上代碼的簡化版本。也許'Logger.TraceWrite'傳遞數據到後臺線程(你可以告訴我們)? –