高 CPU 使用率和“非常高”的 PowerShell 启动-睡眠电源使用率

问题描述 投票:0回答:1

我在 Windows 10 中创建了一个 PowerShell 脚本,用于在系统托盘中显示一个图标,并根据 Caps Lock 是否打开来更改图标。 (我的键盘没有大写锁定指示灯)。 该脚本非常简单(就像我一样),但涉及无限循环,因此它会不断检查。

当我使用以下行确定循环间隔时,PowerShell 实例使用 16% CPU 且根据任务管理器显示“非常高”的电源使用率:

Start-Sleep -Seconds 0.5

但是,当我使用以下行确定循环间隔时,根据任务管理器,PowerShell 实例使用 ~0% 的 CPU 和“非常低”的功耗:

Start-Sleep -Milliseconds 500

尽管时间间隔是相同的。不用说,我会选择第二个选项(我什至将其减少到 200 毫秒,响应更好,但仍然没有问题)。

我想知道,有谁知道为什么使用“秒”的分数会导致 CPU 使用率急剧增加? (我猜测相对较高的 CPU 使用率是“非常高”功耗的来源)。

我想可能是因为CPU正在转换数据类型,虽然对我来说仍然有点极端,所以我尝试了:

Start-Sleep -Seconds 1.5 

根据任务管理器,这导致大约 0% 的 CPU 和“非常低”的功耗......

有什么想法吗?

powershell cpu-usage
1个回答
0
投票

我不确定为什么在 Start-Sleep 中使用几分之一秒会导致 CPU 使用率急剧增加。不过,我有一些理论:

  • CPU 可能正在做额外的工作来将几分之一秒转换为毫秒。
  • CPU 也可能正在做额外的工作来确保睡眠尽可能准确。当您指定整数秒数时,CPU 可以简单地等待该秒数过去。但是,当您指定几分之一秒时,CPU 必须跟踪时间并在精确的时刻唤醒。
  • 最后,PowerShell 中也可能存在一个错误,导致在 Start-Sleep 中使用几分之一秒时导致 CPU 使用率过高。

这里是类似问题的链接

© www.soinside.com 2019 - 2024. All rights reserved.