我正在使用一个简单的vb脚本来获取CPU0的负载百分比,但是Windows Server 2016上的WMI枚举要慢于旧版本,因此我需要优化速度。
这是我的简短剧本:
Option Explicit
Dim objWMIService, processItems, objitem, loadpercentage
loadpercentage= 0
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set processItems = objWMIService.ExecQuery("SELECT * FROM Win32_Processor _
WHERE DeviceID='CPU0'", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each objItem In processItems
loadpercentage = objItem.LoadPercentage
Next
设置processItems与进入For Each循环之间有10秒的延迟。 Windows Server的较早版本上的相同脚本需要2秒。可以做任何事情来优化WMI枚举吗?预先感谢。
答案 0 :(得分:0)
尽量不要在WQL查询中使用*。没有任何属性的筛选只会大大减慢WMI查询的速度。与其相反,确切地指定所需的属性,而无需其他任何操作:
SELECT LoadPercentage FROM Win32_Processor WHERE DeviceID='CPU0'