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:
Chris Titus
2026-07-01 23:34:59 -05:00
committed by GitHub
parent 916dc761ba
commit 93dc23dd66
31 changed files with 1114 additions and 133 deletions
@@ -5,6 +5,17 @@ function Invoke-WinUtilAssets {
[switch]$render
)
if ($render -and $null -ne $sync) {
if ($null -eq $sync.RenderedAssetCache) {
$sync.RenderedAssetCache = @{}
}
$cacheKey = "$(([string]$type).ToLowerInvariant())|$Size"
if ($sync.RenderedAssetCache.ContainsKey($cacheKey)) {
return $sync.RenderedAssetCache[$cacheKey]
}
}
# Create the Viewbox and set its size
$LogoViewbox = New-Object Windows.Controls.Viewbox
$LogoViewbox.Width = $Size
@@ -191,6 +202,13 @@ C 21.36,47.14 28.67,50.71 30.01,52.63
$bitmapImage.StreamSource = $imageStream
$bitmapImage.CacheOption = [Windows.Media.Imaging.BitmapCacheOption]::OnLoad
$bitmapImage.EndInit()
if ($bitmapImage.CanFreeze) {
$bitmapImage.Freeze()
}
if ($null -ne $sync -and $sync.ContainsKey("RenderedAssetCache")) {
$sync.RenderedAssetCache[$cacheKey] = $bitmapImage
}
return $bitmapImage
} else {