【发布时间】:2017-07-20 22:55:00
【问题描述】:
我正在创建一个工具来跟踪内存和 CPU 使用情况或选择的特定进程。为了使工具精确,我需要密切跟踪资源,每 50 毫秒探测一次。
假设现代计算机内部发生的任何事情(不包括网络 IO、用户输入)都不会花费更多时间(如果计算量不大,它应该非常快)。我错了,Get-WMIObject CMD'let 需要更多的方式来返回结果,请比较:
time { Get-WMIObject Win32_Process -Filter "ProcessId='24380'"} -Samples 10 -Silent
# ..........
# Avg: 190.5335ms
# Min: 180.3689ms
# Max: 203.6968ms #>
-
time { get-process -name *chrome* 2> $null } -Samples 10 -Silent
# ..........
# Avg: 5.2ms
# Min: 3.7711ms
# Max: 13.5161ms #>
问题:为什么这么慢,我该怎么办(主要动机是使用私有工作集和 Get-WMIObject 在我的工具中提供的许多其他指标)。从 C/C++/C# 实用程序与 Win32_PerfRawData_PerfProc_Process 交互是否是在 Powershell 中使用它的好选择?
【问题讨论】:
标签: windows performance powershell performance-testing