Skip to content

Instantly share code, notes, and snippets.

@SteveL-MSFT
Created May 23, 2022 21:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SteveL-MSFT/f602dd7e3faac36cc8c781b3c07d036e to your computer and use it in GitHub Desktop.
Save SteveL-MSFT/f602dd7e3faac36cc8c781b3c07d036e to your computer and use it in GitHub Desktop.
param(
[Parameter(ValueFromPipeline=$true)]
[ValueType]
$profileEvent
)
begin {
$profileEvents = [System.Collections.Generic.List[object]]::new()
}
process {
$profileEvents.Add($profileEvent)
}
end {
$sortedEvents = $profileEvents | ForEach-Object {
[pscustomobject]@{
Duration = $_.Duration
Executed = 1
StartLineNumber = $_.Extent.StartLineNumber
StartColumnNumber = $_.Extent.StartColumnNumber
Source = $_.Source }
} | sort-object StartLineNumber, StartColumnNumber
$startLineNumber = 0
$startColumnNumber = 0
$combinedProfileEvents = [System.Collections.Generic.List[object]]::new()
$lastEvent = [pscustomobject]@{
Duration = [TimeSpan]::new(0)
Executed = 0
StartLineNumber = 0
StartColumnNumber = 0
Source = ''
}
foreach ($event in $sortedEvents) {
if ($startLineNumber -eq $event.StartLineNumber -and $startColumnNumber -eq $event.StartColumnNumber) {
$lastEvent.Duration += $event.Duration
$lastEvent.Executed++
}
else {
$combinedProfileEvents.Add($lastEvent)
$startLineNumber = $event.StartLineNumber
$startColumnNumber = $event.StartColumnNumber
$lastEvent = $event
}
}
$combinedProfileEvents.RemoveAt(0)
$combinedProfileEvents.Add($lastEvent)
$combinedProfileEvents | format-table
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment