Skip to content

docs: viewer panel design audit (read-only inventory)#125

Draft
philliphoff wants to merge 1 commit into
mainfrom
philliphoff/philliphoff-viewer-panel-design-audit
Draft

docs: viewer panel design audit (read-only inventory)#125
philliphoff wants to merge 1 commit into
mainfrom
philliphoff/philliphoff-viewer-panel-design-audit

Conversation

@philliphoff
Copy link
Copy Markdown
Owner

Read-only design audit of every panel surface in the viewer, requested via cross-session message from Next features brainstorm. Single new file: docs/design/viewer-panel-inventory.md. No code, axaml, or test changes.

What's in the doc

  1. Overview — framing of the viewer's shell as it stands today.
  2. Shell layout — ASCII + mermaid diagram of MainWindow.axaml's 5-column ContentGrid plus the surrounding DockPanel and overlay layers.
  3. Panel inventory — 12 panel surfaces inventoried along all 8 axes from the brief (location, host, layout, visibility, DI, data flow, sizing/persistence, loc/tooltip/splitter compliance). Tables cite file:line throughout.
  4. Pattern groups — 7 buckets (activity-bar tab • right column overlay • bottom row • map overlay cluster • floating overlay • in-panel TabControl • in-panel data-templated content) with canonical example + divergences per bucket.
  5. Cross-cutting observations — 10 items.
  6. Open questions for the refactor brief — 6 opinionated, prioritized questions.
  7. Appendix A — 5 soft bugs spotted while auditing (none fixed).
  8. Appendix B — files surveyed.

Highlights

  • Pick Report is inline in MainWindow.axaml (~306 lines, lines 704-1010), not a UserControl — only panel in the codebase like this.
  • Persistence asymmetry: visibility booleans for Status/Timeline/Pick are persisted but no panel size is (activity pane 320w, pick panel 360w, timeline 120h, two internal splitters in Datasets and Catalog all reset every session).
  • PaneSplitter style is duplicated three times (MainWindow, CatalogPanelView, DatasetsView) — known per viewer.instructions.md, but a candidate for App.axaml lift.
  • Adding a new activity-bar tab requires editing five places in MainViewModel.cs + the activity-bar XAML + the activity-pane <Panel> — argues for an IActivityTab plug-in registry.
  • IsPickPanelVisible = _isPickPanelEnabled && PickReport.HasPick is the only double-gated visibility expression — every other surface is a single bool.
  • DatasetsView smuggles a whole second pattern group (an in-panel TabControl with 3 tabs) inside a single activity-bar tab.

Word count

~4,400 words.

Audit method

Read MainWindow.axaml + .cs, App.axaml.cs, MainViewModel.cs, ViewerSettings.cs, ActivityKind.cs, and every UserControl under Views/. Cross-checked the viewer.instructions.md compliance rules.

Out of scope (per the brief)

  • No code, axaml, or test changes.
  • No CI runs (documentation PR).
  • No fixes for the soft bugs in Appendix A.

Catalogs every panel surface in the viewer (activity-bar tabs, Pick
Report column, Timeline row, map overlays, exchange-set banner/progress,
status bar, toast host) along the 8 axes from the audit brief:
location, host, layout, visibility model, DI/construction, data flow,
sizing/persistence, loc+tooltip+splitter compliance.

Surfaces 7 pattern groups (activity-bar tab, right column overlay,
bottom row, map overlay cluster, floating overlay, in-panel TabControl,
in-panel data-templated content) with canonical example and divergences
for each.

Cross-cutting observations highlight persistence asymmetry (visibility
booleans persisted, panel sizes never are), the triple-duplicated
`PaneSplitter` style, the hard-coded `ActivityKind` enum + 4-place
edit cost for new tabs, the Pick Report being inlined in MainWindow
rather than extracted to a UserControl, and the duplicate UI between
the toolbar pills and the ECDIS Display panel.

Closes with 6 opinionated open questions for the refactor brief and
a 5-item appendix of soft bugs spotted while auditing. Read-only —
no code, axaml, or test changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions
Copy link
Copy Markdown
Contributor

Performance Gate

PASSED — no regressions.

Threshold: 10.0%, MAD multiplier (k): 3.0, retry-zone mult: 2.0×

Scenario summary

Scenario Status Δ median (%) z (Δ/MAD) Base median (ms) Samples (b/c)
exchange-set-open ✅ pass +10.3 +1.13 0.59 20/20
s101-portray-cold ✅ pass -7.6 -1.04 392.68 20/20
s101-portray-warm ✅ pass -3.3 -0.71 252.99 20/20
s101-render-warm ✅ pass -0.9 -0.35 237.95 20/20
s102-coverage ✅ pass +1.4 +0.15 1.10 20/20
s102-coverage-open ✅ pass -5.3 -1.19 2.75 20/20
s102-coverage-render-large ✅ pass +1.0 +0.90 138.83 20/20
s124-vector ✅ pass -7.7 -0.85 0.36 20/20
s201-vector ✅ pass -4.0 -0.81 0.38 20/20

exchange-set-open

Iteration statistics

Stat Baseline Candidate
Samples 20 20
Median (ms) 0.59 0.65
Baseline MAD (ms) 0.05
Δ median +10.3%
z (Δ/MAD) +1.13

Spans (sum of all iterations)

Span Baseline (ms) Candidate (ms) Delta Status
s100.asset.read 11.58 11.64 +0.5% ▫️
s100.exchangeset.parse 44.00 43.16 -1.9% ▫️

Metrics

Metric Baseline Candidate Delta Status
s100.asset.read.duration 19.28 18.43 -4.4% ▫️

s101-portray-cold

Iteration statistics

Stat Baseline Candidate
Samples 20 20
Median (ms) 392.68 362.89
Baseline MAD (ms) 28.63
Δ median -7.6%
z (Δ/MAD) -1.04

Spans (sum of all iterations)

Span Baseline (ms) Candidate (ms) Delta Status
s100.lua.execute 9647.61 9733.52 +0.9% ▫️
s100.lua.rule.invoke 8429.80 8564.30 +1.6% ▫️
s100.pipeline.vector.process 9965.05 10053.80 +0.9% ▫️
s100.pipeline.vector.stage.assemble 0.30 0.30 -1.4% ▫️
s100.pipeline.vector.stage.feature_xml 211.62 206.74 -2.3% ▫️
s100.pipeline.vector.stage.lua 9649.84 9735.98 +0.9% ▫️
s100.pipeline.vector.stage.rule_select 9.00 8.31 -7.7% ▫️
s100.pipeline.vector.stage.sort 10.87 10.33 -5.0% ▫️
s100.pipeline.vector.stage.viewing_groups 13.37 12.80 -4.2% ▫️
s100.pipeline.vector.stage.xslt 0.42 0.38 -9.3% ▫️
s100.render.frame 2233.94 2213.99 -0.9% ▫️

Metrics

Metric Baseline Candidate Delta Status
s100.catalogue.match.count 7.00 7.00 +0.0% ▫️
s100.featurecatalogue.cache.hit.count 6.00 6.00 +0.0% ▫️
s100.featurecatalogue.cache.miss.count 1.00 1.00 +0.0% ▫️
s100.lua.execute.duration 2431.05 2308.38 -5.0% ▫️
s100.lua.features.count 2478.00 2478.00 +0.0% ▫️
s100.lua.instructions.emitted.count 3059.00 3059.00 +0.0% ▫️
s100.lua.rule.invoke.count 7.00 7.00 +0.0% ▫️
s100.lua.rule.invoke.count 77.00 77.00 +0.0% ▫️
s100.lua.rule.invoke.duration 2074.50 1952.68 -5.9% ▫️
s100.lua.rule.invoke.duration 4.60 4.64 +0.8% ▫️
s100.lua.source.cache.hit.count 552.00 552.00 +0.0% ▫️
s100.lua.source.cache.miss.count 43.00 43.00 +0.0% ▫️
s100.pattern.cache.hit.count 210.00 210.00 +0.0% ▫️
s100.pattern.cache.miss.count 14.00 14.00 +0.0% ▫️
s100.pipeline.drawinginstructions.out 3059.00 3059.00 +0.0% ▫️
s100.pipeline.duration 2499.90 2387.55 -4.5% ▫️
s100.pipeline.features.in 217.00 217.00 +0.0% ▫️
s100.pipeline.stage.duration 0.31 0.34 +11.3%
s100.pipeline.stage.duration 54.58 64.33 +17.9%
s100.pipeline.stage.duration 2432.40 2309.83 -5.0% ▫️
s100.pipeline.stage.duration 4.93 5.10 +3.4% ▫️
s100.pipeline.stage.duration 3.83 3.83 +0.0% ▫️
s100.pipeline.stage.duration 1.00 1.08 +8.7%
s100.pipeline.stage.duration 0.86 0.87 +0.8% ▫️
s100.pipeline.stage.instructions.count 0.00 0.00 N/A ▫️
s100.pipeline.stage.instructions.count 3059.00 3059.00 +0.0% ▫️
s100.pipeline.stage.instructions.count 3059.00 3059.00 +0.0% ▫️
s100.pipeline.stage.instructions.count 3059.00 3059.00 +0.0% ▫️
s100.portrayal.cache.hit.count 12.00 12.00 +0.0% ▫️
s100.portrayal.cache.hit.count 552.00 552.00 +0.0% ▫️
s100.portrayal.cache.hit.count 7.00 7.00 +0.0% ▫️
s100.portrayal.cache.hit.count 96.00 96.00 +0.0% ▫️
s100.portrayal.cache.miss.count 2.00 2.00 +0.0% ▫️
s100.portrayal.cache.miss.count 43.00 43.00 +0.0% ▫️
s100.portrayal.cache.miss.count 16.00 16.00 +0.0% ▫️
s100.render.frame.duration 703.29 705.16 +0.3% ▫️
s100.render.instructions.processed.count 3059.00 3059.00 +0.0% ▫️
s100.render.styles.applied.count 3311.00 3311.00 +0.0% ▫️
s100.symbol.cache.hit.count 364.00 364.00 +0.0% ▫️
s100.symbol.cache.miss.count 98.00 98.00 +0.0% ▫️
s100.symbol.resolve.duration 0.35 0.35 -0.4% ▫️
s100.symbol.resolve.duration 17.54 17.72 +1.1% ▫️

s101-portray-warm

Iteration statistics

Stat Baseline Candidate
Samples 20 20
Median (ms) 252.99 244.70
Baseline MAD (ms) 11.73
Δ median -3.3%
z (Δ/MAD) -0.71

Spans (sum of all iterations)

Span Baseline (ms) Candidate (ms) Delta Status
s100.lua.execute 7269.42 7021.75 -3.4% ▫️
s100.lua.rule.invoke 6391.72 6238.27 -2.4% ▫️
s100.pipeline.vector.process 7669.25 7421.58 -3.2% ▫️
s100.pipeline.vector.stage.assemble 0.25 0.23 -7.0% ▫️
s100.pipeline.vector.stage.feature_xml 370.75 369.14 -0.4% ▫️
s100.pipeline.vector.stage.lua 7270.86 7023.32 -3.4% ▫️
s100.pipeline.vector.stage.rule_select 5.44 5.53 +1.6% ▫️
s100.pipeline.vector.stage.sort 15.36 16.86 +9.7%
s100.pipeline.vector.stage.viewing_groups 17.22 18.79 +9.1%
s100.pipeline.vector.stage.xslt 0.29 0.28 -2.3% ▫️
s100.render.frame 219.33 213.50 -2.7% ▫️

Metrics

Metric Baseline Candidate Delta Status
s100.catalogue.match.count 1.00 1.00 +0.0% ▫️
s100.featurecatalogue.cache.hit.count 7.00 7.00 +0.0% ▫️
s100.lua.execute.duration 1747.44 1635.37 -6.4% ▫️
s100.lua.features.count 2478.00 2478.00 +0.0% ▫️
s100.lua.instructions.emitted.count 3059.00 3059.00 +0.0% ▫️
s100.lua.rule.invoke.count 7.00 7.00 +0.0% ▫️
s100.lua.rule.invoke.count 77.00 77.00 +0.0% ▫️
s100.lua.rule.invoke.duration 1518.60 1420.46 -6.5% ▫️
s100.lua.rule.invoke.duration 17.12 2.82 -83.6%
s100.lua.source.cache.hit.count 595.00 595.00 +0.0% ▫️
s100.pattern.cache.hit.count 222.00 222.00 +0.0% ▫️
s100.pattern.cache.miss.count 2.00 2.00 +0.0% ▫️
s100.pipeline.drawinginstructions.out 3059.00 3059.00 +0.0% ▫️
s100.pipeline.duration 1846.54 1733.79 -6.1% ▫️
s100.pipeline.features.in 217.00 217.00 +0.0% ▫️
s100.pipeline.stage.duration 0.02 0.02 -2.2% ▫️
s100.pipeline.stage.duration 91.37 90.72 -0.7% ▫️
s100.pipeline.stage.duration 1747.82 1635.79 -6.4% ▫️
s100.pipeline.stage.duration 1.57 1.51 -4.1% ▫️
s100.pipeline.stage.duration 3.89 3.87 -0.4% ▫️
s100.pipeline.stage.duration 0.22 0.32 +47.4%
s100.pipeline.stage.duration 0.05 0.04 -6.5% ▫️
s100.pipeline.stage.instructions.count 0.00 0.00 N/A ▫️
s100.pipeline.stage.instructions.count 3059.00 3059.00 +0.0% ▫️
s100.pipeline.stage.instructions.count 3059.00 3059.00 +0.0% ▫️
s100.pipeline.stage.instructions.count 3059.00 3059.00 +0.0% ▫️
s100.portrayal.cache.hit.count 2.00 2.00 +0.0% ▫️
s100.portrayal.cache.hit.count 595.00 595.00 +0.0% ▫️
s100.portrayal.cache.hit.count 7.00 7.00 +0.0% ▫️
s100.portrayal.cache.hit.count 16.00 16.00 +0.0% ▫️
s100.render.frame.duration 121.17 110.90 -8.5% ▫️
s100.render.instructions.processed.count 3059.00 3059.00 +0.0% ▫️
s100.render.styles.applied.count 3311.00 3311.00 +0.0% ▫️
s100.symbol.cache.hit.count 448.00 448.00 +0.0% ▫️
s100.symbol.cache.miss.count 14.00 14.00 +0.0% ▫️
s100.symbol.resolve.duration 0.46 0.46 -1.3% ▫️
s100.symbol.resolve.duration 2.20 2.16 -1.9% ▫️

s101-render-warm

Iteration statistics

Stat Baseline Candidate
Samples 20 20
Median (ms) 237.95 235.77
Baseline MAD (ms) 6.30
Δ median -0.9%
z (Δ/MAD) -0.35

Spans (sum of all iterations)

Span Baseline (ms) Candidate (ms) Delta Status
s100.lua.execute 6905.01 6838.84 -1.0% ▫️
s100.lua.rule.invoke 6165.64 6154.28 -0.2% ▫️
s100.pipeline.vector.process 7084.41 7016.45 -1.0% ▫️
s100.pipeline.vector.stage.assemble 0.20 0.17 -13.7%
s100.pipeline.vector.stage.feature_xml 160.49 158.31 -1.4% ▫️
s100.pipeline.vector.stage.lua 6906.21 6840.03 -1.0% ▫️
s100.pipeline.vector.stage.rule_select 3.37 3.34 -1.0% ▫️
s100.pipeline.vector.stage.sort 9.13 9.97 +9.2%
s100.pipeline.vector.stage.viewing_groups 10.86 11.60 +6.8%
s100.pipeline.vector.stage.xslt 0.22 0.20 -10.3%
s100.render.frame 197.51 197.60 +0.0% ▫️

Metrics

Metric Baseline Candidate Delta Status
s100.catalogue.match.count 1.00 1.00 +0.0% ▫️
s100.featurecatalogue.cache.hit.count 7.00 7.00 +0.0% ▫️
s100.lua.execute.duration 1659.84 1501.10 -9.6% ▫️
s100.lua.features.count 2478.00 2478.00 +0.0% ▫️
s100.lua.instructions.emitted.count 3059.00 3059.00 +0.0% ▫️
s100.lua.rule.invoke.count 7.00 7.00 +0.0% ▫️
s100.lua.rule.invoke.count 77.00 77.00 +0.0% ▫️
s100.lua.rule.invoke.duration 1484.67 1351.87 -8.9% ▫️
s100.lua.rule.invoke.duration 2.13 2.42 +13.8%
s100.lua.source.cache.hit.count 595.00 595.00 +0.0% ▫️
s100.pattern.cache.hit.count 222.00 222.00 +0.0% ▫️
s100.pattern.cache.miss.count 2.00 2.00 +0.0% ▫️
s100.pipeline.drawinginstructions.out 3059.00 3059.00 +0.0% ▫️
s100.pipeline.duration 1702.49 1544.27 -9.3% ▫️
s100.pipeline.features.in 217.00 217.00 +0.0% ▫️
s100.pipeline.stage.duration 0.02 0.02 -15.9%
s100.pipeline.stage.duration 37.73 38.47 +2.0% ▫️
s100.pipeline.stage.duration 1660.10 1501.30 -9.6% ▫️
s100.pipeline.stage.duration 0.98 0.89 -8.9% ▫️
s100.pipeline.stage.duration 2.34 2.51 +7.2%
s100.pipeline.stage.duration 0.25 0.18 -26.2%
s100.pipeline.stage.duration 0.03 0.03 +3.9% ▫️
s100.pipeline.stage.instructions.count 0.00 0.00 N/A ▫️
s100.pipeline.stage.instructions.count 3059.00 3059.00 +0.0% ▫️
s100.pipeline.stage.instructions.count 3059.00 3059.00 +0.0% ▫️
s100.pipeline.stage.instructions.count 3059.00 3059.00 +0.0% ▫️
s100.portrayal.cache.hit.count 2.00 2.00 +0.0% ▫️
s100.portrayal.cache.hit.count 595.00 595.00 +0.0% ▫️
s100.portrayal.cache.hit.count 7.00 7.00 +0.0% ▫️
s100.portrayal.cache.hit.count 16.00 16.00 +0.0% ▫️
s100.render.frame.duration 109.73 109.35 -0.4% ▫️
s100.render.instructions.processed.count 3059.00 3059.00 +0.0% ▫️
s100.render.styles.applied.count 3311.00 3311.00 +0.0% ▫️
s100.symbol.cache.hit.count 448.00 448.00 +0.0% ▫️
s100.symbol.cache.miss.count 14.00 14.00 +0.0% ▫️
s100.symbol.resolve.duration 0.22 0.26 +21.1%
s100.symbol.resolve.duration 2.06 2.12 +2.7% ▫️

s102-coverage

Iteration statistics

Stat Baseline Candidate
Samples 20 20
Median (ms) 1.10 1.12
Baseline MAD (ms) 0.10
Δ median +1.4%
z (Δ/MAD) +0.15

Spans (sum of all iterations)

Span Baseline (ms) Candidate (ms) Delta Status
s100.pipeline.coverage.process 45.86 44.97 -1.9% ▫️
s100.pipeline.coverage.stage.read 4.97 4.90 -1.5% ▫️
s100.pipeline.coverage.stage.resolve 37.72 36.72 -2.6% ▫️
s100.render.coverage.build 82.41 82.28 -0.2% ▫️

Metrics

Metric Baseline Candidate Delta Status
s100.catalogue.match.count 1.00 1.00 +0.0% ▫️
s100.coverage.cells 4557.00 4557.00 +0.0% ▫️
s100.hdf5.read.bytes 5208.00 5208.00 +0.0% ▫️
s100.hdf5.read.duration 22.05 21.88 -0.8% ▫️
s100.hdf5.read.duration 30.28 30.71 +1.4% ▫️
s100.hdf5.read.duration 7.66 7.67 +0.2% ▫️
s100.pipeline.duration 8.67 8.97 +3.4% ▫️
s100.pipeline.stage.duration 0.94 1.00 +6.4%
s100.pipeline.stage.duration 7.28 7.38 +1.3% ▫️
s100.portrayal.cache.hit.count 7.00 7.00 +0.0% ▫️

s102-coverage-open

Iteration statistics

Stat Baseline Candidate
Samples 20 20
Median (ms) 2.75 2.60
Baseline MAD (ms) 0.12
Δ median -5.3%
z (Δ/MAD) -1.19

Spans (sum of all iterations)

Span Baseline (ms) Candidate (ms) Delta Status
s100.dataset.open 106.85 91.54 -14.3%
s100.hdf5.dataset.read 12.13 12.22 +0.8% ▫️
s100.hdf5.file.open 24.50 17.64 -28.0%
s100.hdf5.open 35.16 26.10 -25.8%

Metrics

Metric Baseline Candidate Delta Status
s100.hdf5.read.bytes 36456.00 36456.00 +0.0% ▫️
s100.hdf5.read.duration 5.86 5.97 +1.9% ▫️
s100.hdf5.read.duration 2.10 2.20 +4.7% ▫️
s100.hdf5.read.duration 4.11 4.22 +2.6% ▫️

s102-coverage-render-large

Iteration statistics

Stat Baseline Candidate
Samples 20 20
Median (ms) 138.83 140.19
Baseline MAD (ms) 1.52
Δ median +1.0%
z (Δ/MAD) +0.90

Spans (sum of all iterations)

Span Baseline (ms) Candidate (ms) Delta Status
s100.pipeline.coverage.process 162.72 177.15 +8.9%
s100.pipeline.coverage.stage.read 113.06 116.19 +2.8% ▫️
s100.pipeline.coverage.stage.resolve 46.53 57.83 +24.3%
s100.render.coverage.build 4865.37 4881.73 +0.3% ▫️

Metrics

Metric Baseline Candidate Delta Status
s100.catalogue.match.count 1.00 1.00 +0.0% ▫️
s100.coverage.cells 7000000.00 7000000.00 +0.0% ▫️
s100.hdf5.read.bytes 8000000.00 8000000.00 +0.0% ▫️
s100.hdf5.read.duration 0.09 0.09 +1.5% ▫️
s100.hdf5.read.duration 5.62 2.77 -50.7%
s100.hdf5.read.duration 1.22 1.19 -2.7% ▫️
s100.pipeline.duration 35.33 34.89 -1.3% ▫️
s100.pipeline.stage.duration 22.27 23.73 +6.6%
s100.pipeline.stage.duration 12.51 10.55 -15.7%
s100.portrayal.cache.hit.count 7.00 7.00 +0.0% ▫️

s124-vector

Iteration statistics

Stat Baseline Candidate
Samples 20 20
Median (ms) 0.36 0.33
Baseline MAD (ms) 0.03
Δ median -7.7%
z (Δ/MAD) -0.85

Spans (sum of all iterations)

Span Baseline (ms) Candidate (ms) Delta Status
s100.pipeline.vector.process 7.46 7.31 -2.0% ▫️
s100.pipeline.vector.stage.assemble 0.27 0.28 +4.1% ▫️
s100.pipeline.vector.stage.feature_xml 1.01 0.98 -3.4% ▫️
s100.pipeline.vector.stage.rule_select 0.27 0.28 +4.2% ▫️
s100.pipeline.vector.stage.sort 0.19 0.17 -7.8% ▫️
s100.pipeline.vector.stage.viewing_groups 0.47 0.40 -15.6%
s100.pipeline.vector.stage.xslt 3.66 3.65 -0.3% ▫️
s100.render.frame 0.94 0.82 -12.9%
s100.xslt.transform 1.43 1.48 +3.6% ▫️

Metrics

Metric Baseline Candidate Delta Status
s100.catalogue.match.count 1.00 1.00 +0.0% ▫️
s100.featurecatalogue.cache.miss.count 1.00 1.00 +0.0% ▫️
s100.pipeline.drawinginstructions.out 14.00 14.00 +0.0% ▫️
s100.pipeline.duration 53.33 54.11 +1.5% ▫️
s100.pipeline.features.in 7.00 7.00 +0.0% ▫️
s100.pipeline.stage.duration 0.98 1.05 +7.4%
s100.pipeline.stage.duration 3.34 3.23 -3.2% ▫️
s100.pipeline.stage.duration 1.09 1.16 +5.9%
s100.pipeline.stage.duration 0.05 0.05 +17.8%
s100.pipeline.stage.duration 0.07 0.09 +28.8%
s100.pipeline.stage.duration 47.48 47.97 +1.0% ▫️
s100.pipeline.stage.instructions.count 14.00 14.00 +0.0% ▫️
s100.pipeline.stage.instructions.count 14.00 14.00 +0.0% ▫️
s100.pipeline.stage.instructions.count 14.00 14.00 +0.0% ▫️
s100.portrayal.cache.hit.count 13.00 13.00 +0.0% ▫️
s100.portrayal.cache.hit.count 7.00 7.00 +0.0% ▫️
s100.portrayal.cache.hit.count 6.00 6.00 +0.0% ▫️
s100.portrayal.cache.miss.count 1.00 1.00 +0.0% ▫️
s100.portrayal.cache.miss.count 1.00 1.00 +0.0% ▫️
s100.render.frame.duration 2.27 2.41 +6.5%
s100.render.instructions.processed.count 14.00 14.00 +0.0% ▫️
s100.render.styles.applied.count 14.00 14.00 +0.0% ▫️
s100.xslt.transform.duration 10.16 10.56 +4.0% ▫️

s201-vector

Iteration statistics

Stat Baseline Candidate
Samples 20 20
Median (ms) 0.38 0.37
Baseline MAD (ms) 0.02
Δ median -4.0%
z (Δ/MAD) -0.81

Spans (sum of all iterations)

Span Baseline (ms) Candidate (ms) Delta Status
s100.pipeline.vector.process 7.93 7.86 -0.9% ▫️
s100.pipeline.vector.stage.assemble 0.19 0.20 +8.0%
s100.pipeline.vector.stage.feature_xml 0.95 0.91 -4.9% ▫️
s100.pipeline.vector.stage.rule_select 0.30 0.29 -1.5% ▫️
s100.pipeline.vector.stage.sort 0.09 0.09 +3.2% ▫️
s100.pipeline.vector.stage.viewing_groups 0.36 0.36 -0.4% ▫️
s100.pipeline.vector.stage.xslt 3.40 3.43 +0.9% ▫️
s100.render.frame 0.78 0.81 +3.9% ▫️
s100.xslt.transform 2.23 2.27 +1.8% ▫️

Metrics

Metric Baseline Candidate Delta Status
s100.catalogue.match.count 1.00 1.00 +0.0% ▫️
s100.featurecatalogue.cache.miss.count 1.00 1.00 +0.0% ▫️
s100.pipeline.drawinginstructions.out 7.00 7.00 +0.0% ▫️
s100.pipeline.duration 153.41 154.42 +0.7% ▫️
s100.pipeline.features.in 21.00 21.00 +0.0% ▫️
s100.pipeline.stage.duration 0.53 0.54 +0.6% ▫️
s100.pipeline.stage.duration 8.33 7.94 -4.8% ▫️
s100.pipeline.stage.duration 0.12 0.15 +28.4%
s100.pipeline.stage.duration 0.02 0.02 +3.4% ▫️
s100.pipeline.stage.duration 0.04 0.05 +6.0%
s100.pipeline.stage.duration 144.08 145.27 +0.8% ▫️
s100.pipeline.stage.instructions.count 7.00 7.00 +0.0% ▫️
s100.pipeline.stage.instructions.count 7.00 7.00 +0.0% ▫️
s100.pipeline.stage.instructions.count 7.00 7.00 +0.0% ▫️
s100.portrayal.cache.hit.count 7.00 7.00 +0.0% ▫️
s100.portrayal.cache.hit.count 6.00 6.00 +0.0% ▫️
s100.portrayal.cache.miss.count 1.00 1.00 +0.0% ▫️
s100.portrayal.cache.miss.count 1.00 1.00 +0.0% ▫️
s100.render.frame.duration 1.07 1.06 -0.4% ▫️
s100.render.instructions.processed.count 7.00 7.00 +0.0% ▫️
s100.render.styles.applied.count 14.00 14.00 +0.0% ▫️
s100.symbol.cache.hit.count 6.00 6.00 +0.0% ▫️
s100.symbol.cache.miss.count 1.00 1.00 +0.0% ▫️
s100.symbol.resolve.duration 0.01 0.03 +270.3%
s100.symbol.resolve.duration 0.81 0.75 -6.6% ▫️
s100.xslt.transform.duration 26.48 26.17 -1.2% ▫️

Generated by EncDotNet.S100.PerfReport gate command

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants