Explorer.exe CPU使用率随非资源管理器进程而增加?

时间:2011-02-26 14:36:26

标签: windows cpu cpu-usage explorer

我有一个在Windows资源管理器中运行的程序。通常,如果没有其他程序正在运行,它将使用2-3%的CPU(因此explorer.exe将在资源监视器中显示2-3%)。当我的程序没有运行并且另一个不会增加explorer.exe CPU使用率的程序正在运行时(例如FireFox),explorer.exe的CPU使用率可以忽略不计。

但是,当我的程序和其他程序(如上所述)同时运行时,explorer.exe将增加到8-10%的CPU使用率。

我注意到在Windows资源管理器中运行的其他程序也会发生同样的事情。

有人知道为什么会这样吗?它是Windows中固有的东西还是其他可能导致此问题的程序?

P.S这与Internet Explorer(iexplorer.exe)

无关

2 个答案:

答案 0 :(得分:1)

这是因为任务切换(可能还有分页)。如果只有一个prgram需要大量的CPU时间和/或内存访问,那么它将被赋予许多CPU时间片,因此能够在“很长”的时间内不间断地运行。另一方面,如果多个进程需要大量的CPU时间,Windows将在它们之间频繁地进行任务切换,从而引入额外的开销(因为它需要在每个任务上存储/加载进程状态 - 开关)。如果你有2个CPU,这个问题较少但仍然可以测量,因为后台进程也需要注意,尽管频率较低。

有关详细信息,请参阅此处:

  

http://en.wikipedia.org/wiki/Context_switch

如果这令人烦恼,你可以尝试这个,但我不确定这是否有效,请不要投票,如果它没有:

将Sleep(10)调用插入您的程序;你的程序应该更长但时间更短:

  

http://msdn.microsoft.com/en-us/library/ms686298%28VS.85%29.aspx

答案 1 :(得分:1)

explorer订阅文件系统事件,以便在文件更改大小,日期,创建的新文件等时更新其显示。

如果另一个进程正在触及大量文件,则可能会增加资源管理器必须执行的操作,从而增加资源管理器的CPU利用率。