docs: 新增 .qoder Repowiki 知识库文档
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
param([int]$Seconds = 8)
|
||||
Add-Type @"
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
public static class W {
|
||||
[DllImport("user32.dll")] public static extern bool ShowWindow(IntPtr h, int n);
|
||||
[DllImport("user32.dll")] public static extern bool IsIconic(IntPtr h);
|
||||
[DllImport("user32.dll")] public static extern IntPtr FindWindow(string c, string t);
|
||||
}
|
||||
"@
|
||||
$SW_RESTORE = 9
|
||||
$SW_MINIMIZE = 6
|
||||
$win = $null
|
||||
Get-Process | Where-Object { $_.MainWindowHandle -ne 0 -and $_.MainWindowTitle -match 'ESP32' } | ForEach-Object {
|
||||
$win = $_; Write-Output ("found window: pid={0} title='{1}'" -f $_.Id, $_.MainWindowTitle)
|
||||
}
|
||||
if (-not $win) { Write-Output 'NO ESP32 WINDOW FOUND'; exit 1 }
|
||||
$hwnd = $win.MainWindowHandle
|
||||
Write-Output ("before: minimized=" + [W]::IsIconic($hwnd))
|
||||
|
||||
function Snap {
|
||||
$h = @{}
|
||||
foreach ($p in (Get-Process | Where-Object { $_.ProcessName -match 'msedgewebview2|ecat_native|pythonw' })) {
|
||||
try { $h[[string]$p.Id] = [pscustomobject]@{ name = $p.ProcessName; cpu = $p.CPU; ws = [math]::Round($p.WorkingSet64/1MB,0) } } catch {}
|
||||
}
|
||||
return $h
|
||||
}
|
||||
function Measure-Phase($label, $dt) {
|
||||
$a = Snap
|
||||
Start-Sleep -Seconds $dt
|
||||
$b = Snap
|
||||
$rows = foreach ($k in $b.Keys) {
|
||||
if ($a.ContainsKey($k)) {
|
||||
$d = ($b[$k].cpu - $a[$k].cpu)
|
||||
if ($d -gt 0) {
|
||||
[pscustomobject]@{ Phase = $label; Pid = [int]$k; Name = $b[$k].name; Pct1Core = [math]::Round($d/$dt*100,1); WS_MB = $b[$k].ws }
|
||||
}
|
||||
}
|
||||
}
|
||||
return $rows
|
||||
}
|
||||
|
||||
$r1 = Measure-Phase 'visible' $Seconds
|
||||
Write-Output '--- minimize ---'
|
||||
[void][W]::ShowWindow($hwnd, $SW_MINIMIZE)
|
||||
Start-Sleep -Seconds 2
|
||||
$r2 = Measure-Phase 'minimized' $Seconds
|
||||
Write-Output '--- restore ---'
|
||||
[void][W]::ShowWindow($hwnd, $SW_RESTORE)
|
||||
Start-Sleep -Seconds 2
|
||||
$r3 = Measure-Phase 'restored' $Seconds
|
||||
|
||||
$all = @() + $r1 + $r2 + $r3
|
||||
$out = $all | Sort-Object Phase, Pct1Core -Descending
|
||||
$out | Format-Table -AutoSize | Out-String -Width 200 | Write-Output
|
||||
foreach ($ph in @('visible','minimized','restored')) {
|
||||
$s = ($out | Where-Object { $_.Phase -eq $ph } | Measure-Object -Property Pct1Core -Sum).Sum
|
||||
Write-Output ("TOTAL {0,-10} = {1,7:N1} % of one core" -f $ph, $s)
|
||||
}
|
||||
Reference in New Issue
Block a user