mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2026-08-09 17:41:14 +10:00
Speed up runspace and tab initialization (#4793)
* Add startup performance tracing * Lazy initialize non-default tabs * Render install app entries incrementally * Defer and cache toggle status checks * Clean up runspace invocation ownership * Defer GUI runspace pool startup * Defer status taskbar asset rendering * Record final speed verification * Fix deferred install render timer callback * Add dispatcher smoke coverage for install rendering * Replace install render timer with dispatcher callbacks * Gate performance tracing behind compile switch * Clean up analyzer warnings in speed changes * Speed up runspace and tab initialization
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
function Start-WinUtilPerformanceTrace {
|
||||
if (-not (Test-WinUtilPerformanceTrace) -or $null -eq $sync) {
|
||||
return
|
||||
}
|
||||
|
||||
if (-not $sync.ContainsKey("PerformanceTrace")) {
|
||||
$sync.PerformanceTrace = @{
|
||||
Stopwatch = [System.Diagnostics.Stopwatch]::StartNew()
|
||||
LastElapsedMs = 0.0
|
||||
}
|
||||
}
|
||||
|
||||
Write-WinUtilPerformanceCheckpoint -Name "Startup trace started"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
function Stop-WinUtilPerformanceTrace {
|
||||
param(
|
||||
[string]$Name = "Startup trace complete"
|
||||
)
|
||||
|
||||
if (-not (Test-WinUtilPerformanceTrace) -or $null -eq $sync -or -not $sync.ContainsKey("PerformanceTrace")) {
|
||||
return
|
||||
}
|
||||
|
||||
Write-WinUtilPerformanceCheckpoint -Name $Name
|
||||
|
||||
if ($null -ne $sync.PerformanceTrace.Stopwatch) {
|
||||
$sync.PerformanceTrace.Stopwatch.Stop()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
function Test-WinUtilPerformanceTrace {
|
||||
$enabledValue = ([string]$env:WINUTIL_PERF_LOG).ToLowerInvariant()
|
||||
if ($enabledValue -in @("1", "true", "yes", "on")) {
|
||||
return $true
|
||||
}
|
||||
|
||||
if ($null -ne $sync -and $sync.ContainsKey("PerformanceTraceEnabled")) {
|
||||
return [bool]$sync.PerformanceTraceEnabled
|
||||
}
|
||||
|
||||
return $false
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
function Write-WinUtilPerformanceCheckpoint {
|
||||
param(
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]$Name
|
||||
)
|
||||
|
||||
if (-not (Test-WinUtilPerformanceTrace) -or $null -eq $sync) {
|
||||
return
|
||||
}
|
||||
|
||||
if (-not $sync.ContainsKey("PerformanceTrace") -or $null -eq $sync.PerformanceTrace.Stopwatch) {
|
||||
$sync.PerformanceTrace = @{
|
||||
Stopwatch = [System.Diagnostics.Stopwatch]::StartNew()
|
||||
LastElapsedMs = 0.0
|
||||
}
|
||||
}
|
||||
|
||||
$elapsedMs = [math]::Round($sync.PerformanceTrace.Stopwatch.Elapsed.TotalMilliseconds, 2)
|
||||
$deltaMs = [math]::Round($elapsedMs - [double]$sync.PerformanceTrace.LastElapsedMs, 2)
|
||||
$sync.PerformanceTrace.LastElapsedMs = $elapsedMs
|
||||
|
||||
Write-WinUtilLog -Level "DEBUG" -Component "StartupPerf" -Message ("{0}: {1:N2} ms (+{2:N2} ms)" -f $Name, $elapsedMs, $deltaMs)
|
||||
}
|
||||
Reference in New Issue
Block a user