我有一个程序,加载系统的事件日志到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'传递数据到后台线程(你可以告诉我们)? –