1e3d14bef2
Append app-side delays to logs/notify-timing.log, add a PowerShell baseline script (~773 ms), and track native WinRT toasts in ROADMAP. Co-authored-by: Cursor <cursoragent@cursor.com>
40 lines
1.9 KiB
PowerShell
40 lines
1.9 KiB
PowerShell
# Measures the latency of Fyne's Windows toast path: write a short PowerShell
|
|
# script to %TEMP% and run it via PowerShell -ExecutionPolicy Bypass, the same
|
|
# approach fyne.io/fyne/v2/app uses in app_windows.go SendNotification.
|
|
param(
|
|
[int]$Iterations = 3
|
|
)
|
|
|
|
$template = @'
|
|
$title = "GoSentry timing test"
|
|
$content = "benchmark"
|
|
$iconPath = "file:///"
|
|
[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] > $null
|
|
$template = [Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastImageAndText02)
|
|
$toastXml = [xml] $template.GetXml()
|
|
$toastXml.GetElementsByTagName("text")[0].AppendChild($toastXml.CreateTextNode($title)) > $null
|
|
$toastXml.GetElementsByTagName("text")[1].AppendChild($toastXml.CreateTextNode($content)) > $null
|
|
$toastXml.GetElementsByTagName("image")[0].SetAttribute("src", $iconPath) > $null
|
|
$xml = New-Object Windows.Data.Xml.Dom.XmlDocument
|
|
$xml.LoadXml($toastXml.OuterXml)
|
|
$toast = [Windows.UI.Notifications.ToastNotification]::new($xml)
|
|
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("ru.mixeme.gosentry.desktop").Show($toast);
|
|
'@
|
|
|
|
Write-Host "Fyne-style Windows toast latency ($Iterations run(s), no icon path):"
|
|
$totalMs = 0
|
|
for ($i = 1; $i -le $Iterations; $i++) {
|
|
$scriptPath = Join-Path $env:TEMP ("fyne-timing-test-$i.ps1")
|
|
Set-Content -Path $scriptPath -Value $template -Encoding UTF8
|
|
$sw = [System.Diagnostics.Stopwatch]::StartNew()
|
|
$launch = "(Get-Content -Encoding UTF8 -Path `"$scriptPath`" -Raw) | Invoke-Expression"
|
|
& PowerShell -ExecutionPolicy Bypass -Command $launch | Out-Null
|
|
$sw.Stop()
|
|
$ms = [int]$sw.ElapsedMilliseconds
|
|
$totalMs += $ms
|
|
Write-Host (" run {0}: {1} ms" -f $i, $ms)
|
|
Remove-Item $scriptPath -ErrorAction SilentlyContinue
|
|
}
|
|
$avg = [math]::Round($totalMs / [double]$Iterations)
|
|
Write-Host (" average: {0} ms" -f $avg)
|