Skip to content

Add non-GML validation design note#133

Open
philliphoff wants to merge 1 commit into
mainfrom
philliphoff/non-gml-validation-design
Open

Add non-GML validation design note#133
philliphoff wants to merge 1 commit into
mainfrom
philliphoff/non-gml-validation-design

Conversation

@philliphoff
Copy link
Copy Markdown
Owner

Design-only PR. Adds docs/design/non-gml-validation.md describing how the existing ValidationRuleSet<TModel> framework extends to the five non-GML S-100 products: S-101 / S-57 vector (ISO 8211) and S-102 / S-104 / S-111 coverage (HDF5). No production code, tests, viewer, or MCP changes.

Key decisions

  • §3-vector (S-101): option (b) — ship a thin spec-aligned S101DatasetView / S101FeatureView façade over S101Document that resolves numeric codes through the bundled FC. Rules read view.OfType("DepthArea") / feature.GetSimple("DRVAL1") instead of code == 42. Defers the full typed-projection (d) without locking it out.
  • §3-coverage: rules run directly on the existing typed datasets (S102Dataset, S104Dataset, S111Dataset). The typed projection already exists — adding a second one would be pure ceremony. Reader-thrown S100DatasetSchemaException / S100DatasetNotSupportedException get caught in Validate() and surfaced as S{nnn}-PROJ-SCHEMA findings.
  • S-57: tiny pre-translation pack + delegation to the S-101 pack against the translated S101Document, with rebadged rule ids. Gated on V-4 (S-101).
  • One concrete framework prep item: each coverage record type needs a GroupPath field so per-cell RelatedFeatureId stays spec-shaped ("/BathymetryCoverage/BathymetryCoverage.01[row,col]"). Lands in V-1.

Sections

§0 scope · §1 background (GML pattern, why non-GML diverges) · §2 candidate rule categories per spec · §3 input-model decisions (vector + coverage + S-57) · §4 framework constraints + per-finding payload conventions · §5 projection-diagnostic equivalents · §6 per-spec v1 rule scope · §7 coverage-specific topics (tile iteration, time-series, NODATA, PureHDF layout) · §8 vector-specific topics (FC conformance, topology, FOID uniqueness) · §9 packaging & integration · §10 open questions · §11 sequencing · two appendices

Recommended PR sequence

  • V-1: S-102 rule pack (8 rules) + BathymetryCoverage.GroupPath + ConcatReports helper.
  • V-2: S-104 rule pack (7 rules; introduces time-axis patterns).
  • V-3: S-111 rule pack (7 rules; mirrors V-2).
  • V-4: S-101 façade + rule pack (10 rules). Largest PR.
  • V-5: S-57 pre-translation pack (3 rules) + delegation. Gated on V-4.

Open questions pinned in §10

GroupPath resolution (recommendation: add field), reader-as-diagnostics rework, façade per-feature vs whole-document shape, S-101 parser warnings, lint/strict modes, MCP validate_all, coverage performance budget, per-cell bbox vs point rendering, S-57 rebadge mechanism.

Out of scope

Tier-3 cross-dataset rules, any rule body, any framework change, any reader change, any test, viewer wiring, MCP surface, performance benchmarking.

Documents how the ValidationRuleSet<TModel> framework extends to the
five non-GML S-100 products: S-101/S-57 vector (ISO 8211) and
S-102/S-104/S-111 coverage (HDF5). Covers input-model decisions
(thin façade for S-101; existing typed datasets for coverage),
projection-diagnostic conventions, per-spec v1 rule scope, packaging,
and a V-1 to V-5 PR sequence.

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 -5.3 -0.58 0.56 20/20
s101-portray-cold ✅ pass +3.7 +0.44 392.56 20/20
s101-portray-warm ✅ pass +1.4 +0.40 237.95 20/20
s101-render-warm ✅ pass -1.5 -0.55 235.24 20/20
s102-coverage ✅ pass -0.1 -0.03 1.04 20/20
s102-coverage-open ✅ pass +1.4 +0.79 2.87 20/20
s102-coverage-render-large ✅ pass -0.1 -0.13 130.57 20/20
s124-vector ✅ pass -1.2 -0.17 0.29 20/20
s201-vector ✅ pass -0.4 -0.12 0.33 20/20

exchange-set-open

Iteration statistics

Stat Baseline Candidate
Samples 20 20
Median (ms) 0.56 0.53
Baseline MAD (ms) 0.05
Δ median -5.3%
z (Δ/MAD) -0.58

Spans (sum of all iterations)

Span Baseline (ms) Candidate (ms) Delta Status
s100.asset.read 10.83 10.64 -1.8% ▫️
s100.exchangeset.parse 39.70 39.66 -0.1% ▫️

Metrics

Metric Baseline Candidate Delta Status
s100.asset.read.duration 18.23 18.47 +1.3% ▫️

s101-portray-cold

Iteration statistics

Stat Baseline Candidate
Samples 20 20
Median (ms) 392.56 407.25
Baseline MAD (ms) 33.37
Δ median +3.7%
z (Δ/MAD) +0.44

Spans (sum of all iterations)

Span Baseline (ms) Candidate (ms) Delta Status
s100.lua.execute 10269.42 10203.61 -0.6% ▫️
s100.lua.rule.invoke 9024.17 8911.43 -1.2% ▫️
s100.pipeline.vector.process 10542.18 10491.95 -0.5% ▫️
s100.pipeline.vector.stage.assemble 0.29 0.28 -2.6% ▫️
s100.pipeline.vector.stage.feature_xml 207.08 208.75 +0.8% ▫️
s100.pipeline.vector.stage.lua 10271.75 10205.89 -0.6% ▫️
s100.pipeline.vector.stage.rule_select 8.02 14.50 +80.9%
s100.pipeline.vector.stage.sort 16.01 17.64 +10.1%
s100.pipeline.vector.stage.viewing_groups 18.44 20.29 +10.0%
s100.pipeline.vector.stage.xslt 0.34 0.33 -3.0% ▫️
s100.render.frame 2333.22 2353.93 +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 2566.92 2637.19 +2.7% ▫️
s100.lua.features.count 2478.00 2478.00 +0.0% ▫️
s100.lua.instructions.emitted.count 4004.00 4004.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 2164.04 2258.67 +4.4% ▫️
s100.lua.rule.invoke.duration 4.59 4.65 +1.2% ▫️
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 4004.00 4004.00 +0.0% ▫️
s100.pipeline.duration 2645.57 2717.71 +2.7% ▫️
s100.pipeline.features.in 217.00 217.00 +0.0% ▫️
s100.pipeline.stage.duration 0.32 0.32 +1.2% ▫️
s100.pipeline.stage.duration 62.48 63.70 +2.0% ▫️
s100.pipeline.stage.duration 2568.34 2638.67 +2.7% ▫️
s100.pipeline.stage.duration 4.92 5.00 +1.8% ▫️
s100.pipeline.stage.duration 5.35 5.70 +6.5%
s100.pipeline.stage.duration 1.09 1.23 +13.3%
s100.pipeline.stage.duration 0.91 0.85 -6.5% ▫️
s100.pipeline.stage.instructions.count 0.00 0.00 N/A ▫️
s100.pipeline.stage.instructions.count 4004.00 4004.00 +0.0% ▫️
s100.pipeline.stage.instructions.count 4004.00 4004.00 +0.0% ▫️
s100.pipeline.stage.instructions.count 4004.00 4004.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 722.61 727.47 +0.7% ▫️
s100.render.instructions.processed.count 4004.00 4004.00 +0.0% ▫️
s100.render.styles.applied.count 4256.00 4256.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.34 0.33 -2.9% ▫️
s100.symbol.resolve.duration 17.15 17.06 -0.5% ▫️

s101-portray-warm

Iteration statistics

Stat Baseline Candidate
Samples 20 20
Median (ms) 237.95 241.24
Baseline MAD (ms) 8.29
Δ median +1.4%
z (Δ/MAD) +0.40

Spans (sum of all iterations)

Span Baseline (ms) Candidate (ms) Delta Status
s100.lua.execute 6957.09 6832.76 -1.8% ▫️
s100.lua.rule.invoke 6213.73 6116.07 -1.6% ▫️
s100.pipeline.vector.process 7309.27 7171.91 -1.9% ▫️
s100.pipeline.vector.stage.assemble 0.21 0.20 -7.7% ▫️
s100.pipeline.vector.stage.feature_xml 321.07 310.11 -3.4% ▫️
s100.pipeline.vector.stage.lua 6958.25 6833.91 -1.8% ▫️
s100.pipeline.vector.stage.rule_select 4.89 4.55 -6.9% ▫️
s100.pipeline.vector.stage.sort 19.35 17.80 -8.0% ▫️
s100.pipeline.vector.stage.viewing_groups 21.25 19.55 -8.0% ▫️
s100.pipeline.vector.stage.xslt 0.25 0.26 +4.9% ▫️
s100.render.frame 265.79 252.59 -5.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 1601.23 1656.93 +3.5% ▫️
s100.lua.features.count 2478.00 2478.00 +0.0% ▫️
s100.lua.instructions.emitted.count 4004.00 4004.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 1434.87 1495.83 +4.2% ▫️
s100.lua.rule.invoke.duration 2.08 1.87 -10.0%
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 4004.00 4004.00 +0.0% ▫️
s100.pipeline.duration 1679.39 1728.15 +2.9% ▫️
s100.pipeline.features.in 217.00 217.00 +0.0% ▫️
s100.pipeline.stage.duration 0.02 0.02 +17.8%
s100.pipeline.stage.duration 70.93 64.70 -8.8% ▫️
s100.pipeline.stage.duration 1601.47 1657.17 +3.5% ▫️
s100.pipeline.stage.duration 1.22 1.08 -11.4%
s100.pipeline.stage.duration 4.32 3.77 -12.6%
s100.pipeline.stage.duration 0.27 0.26 -4.6% ▫️
s100.pipeline.stage.duration 0.04 0.04 +3.2% ▫️
s100.pipeline.stage.instructions.count 0.00 0.00 N/A ▫️
s100.pipeline.stage.instructions.count 4004.00 4004.00 +0.0% ▫️
s100.pipeline.stage.instructions.count 4004.00 4004.00 +0.0% ▫️
s100.pipeline.stage.instructions.count 4004.00 4004.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 123.04 123.92 +0.7% ▫️
s100.render.instructions.processed.count 4004.00 4004.00 +0.0% ▫️
s100.render.styles.applied.count 4256.00 4256.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.32 0.30 -5.8% ▫️
s100.symbol.resolve.duration 1.97 2.01 +1.7% ▫️

s101-render-warm

Iteration statistics

Stat Baseline Candidate
Samples 20 20
Median (ms) 235.24 231.64
Baseline MAD (ms) 6.60
Δ median -1.5%
z (Δ/MAD) -0.55

Spans (sum of all iterations)

Span Baseline (ms) Candidate (ms) Delta Status
s100.lua.execute 6844.40 7143.74 +4.4% ▫️
s100.lua.rule.invoke 6078.27 6360.43 +4.6% ▫️
s100.pipeline.vector.process 6982.21 7265.50 +4.1% ▫️
s100.pipeline.vector.stage.assemble 0.16 0.16 -4.0% ▫️
s100.pipeline.vector.stage.feature_xml 116.95 101.12 -13.5%
s100.pipeline.vector.stage.lua 6845.39 7144.88 +4.4% ▫️
s100.pipeline.vector.stage.rule_select 3.19 2.90 -9.2% ▫️
s100.pipeline.vector.stage.sort 12.08 12.02 -0.5% ▫️
s100.pipeline.vector.stage.viewing_groups 13.85 13.88 +0.2% ▫️
s100.pipeline.vector.stage.xslt 0.20 0.18 -12.3%
s100.render.frame 177.65 193.32 +8.8%

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 1629.76 1632.39 +0.2% ▫️
s100.lua.features.count 2478.00 2478.00 +0.0% ▫️
s100.lua.instructions.emitted.count 4004.00 4004.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 1457.69 1476.12 +1.3% ▫️
s100.lua.rule.invoke.duration 1.91 1.76 -7.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 4004.00 4004.00 +0.0% ▫️
s100.pipeline.duration 1658.18 1655.91 -0.1% ▫️
s100.pipeline.features.in 217.00 217.00 +0.0% ▫️
s100.pipeline.stage.duration 0.02 0.02 +7.9%
s100.pipeline.stage.duration 23.77 18.69 -21.3%
s100.pipeline.stage.duration 1629.95 1632.64 +0.2% ▫️
s100.pipeline.stage.duration 0.72 0.73 +2.3% ▫️
s100.pipeline.stage.duration 2.68 2.68 -0.3% ▫️
s100.pipeline.stage.duration 0.22 0.27 +20.4%
s100.pipeline.stage.duration 0.03 0.03 +9.1%
s100.pipeline.stage.instructions.count 0.00 0.00 N/A ▫️
s100.pipeline.stage.instructions.count 4004.00 4004.00 +0.0% ▫️
s100.pipeline.stage.instructions.count 4004.00 4004.00 +0.0% ▫️
s100.pipeline.stage.instructions.count 4004.00 4004.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 108.31 111.47 +2.9% ▫️
s100.render.instructions.processed.count 4004.00 4004.00 +0.0% ▫️
s100.render.styles.applied.count 4256.00 4256.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.21 0.28 +37.1%
s100.symbol.resolve.duration 1.04 1.02 -1.4% ▫️

s102-coverage

Iteration statistics

Stat Baseline Candidate
Samples 20 20
Median (ms) 1.04 1.04
Baseline MAD (ms) 0.03
Δ median -0.1%
z (Δ/MAD) -0.03

Spans (sum of all iterations)

Span Baseline (ms) Candidate (ms) Delta Status
s100.pipeline.coverage.process 43.32 41.47 -4.3% ▫️
s100.pipeline.coverage.stage.read 5.02 4.72 -5.9% ▫️
s100.pipeline.coverage.stage.resolve 35.21 34.03 -3.4% ▫️
s100.render.coverage.build 77.99 75.88 -2.7% ▫️

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 21.39 21.15 -1.1% ▫️
s100.hdf5.read.duration 29.47 29.68 +0.7% ▫️
s100.hdf5.read.duration 7.35 7.16 -2.6% ▫️
s100.pipeline.duration 8.28 8.41 +1.6% ▫️
s100.pipeline.stage.duration 0.86 0.92 +6.8%
s100.pipeline.stage.duration 6.96 7.08 +1.7% ▫️
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.87 2.92
Baseline MAD (ms) 0.05
Δ median +1.4%
z (Δ/MAD) +0.79

Spans (sum of all iterations)

Span Baseline (ms) Candidate (ms) Delta Status
s100.dataset.open 79.30 80.55 +1.6% ▫️
s100.hdf5.dataset.read 11.57 12.25 +5.9%
s100.hdf5.file.open 20.15 19.98 -0.8% ▫️
s100.hdf5.open 20.86 20.49 -1.7% ▫️

Metrics

Metric Baseline Candidate Delta Status
s100.hdf5.read.bytes 36456.00 36456.00 +0.0% ▫️
s100.hdf5.read.duration 6.60 6.56 -0.7% ▫️
s100.hdf5.read.duration 2.32 2.31 -0.3% ▫️
s100.hdf5.read.duration 4.75 4.69 -1.4% ▫️

s102-coverage-render-large

Iteration statistics

Stat Baseline Candidate
Samples 20 20
Median (ms) 130.57 130.48
Baseline MAD (ms) 0.71
Δ median -0.1%
z (Δ/MAD) -0.13

Spans (sum of all iterations)

Span Baseline (ms) Candidate (ms) Delta Status
s100.pipeline.coverage.process 156.32 183.14 +17.2%
s100.pipeline.coverage.stage.read 111.54 135.58 +21.6%
s100.pipeline.coverage.stage.resolve 41.97 44.41 +5.8%
s100.render.coverage.build 4651.84 4858.72 +4.4% ▫️

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.07 0.07 -5.0% ▫️
s100.hdf5.read.duration 2.46 2.50 +1.5% ▫️
s100.hdf5.read.duration 1.31 1.23 -6.0% ▫️
s100.pipeline.duration 28.89 41.35 +43.1%
s100.pipeline.stage.duration 20.40 30.71 +50.6%
s100.pipeline.stage.duration 7.94 9.93 +25.0%
s100.portrayal.cache.hit.count 7.00 7.00 +0.0% ▫️

s124-vector

Iteration statistics

Stat Baseline Candidate
Samples 20 20
Median (ms) 0.29 0.29
Baseline MAD (ms) 0.02
Δ median -1.2%
z (Δ/MAD) -0.17

Spans (sum of all iterations)

Span Baseline (ms) Candidate (ms) Delta Status
s100.pipeline.vector.process 6.37 6.41 +0.6% ▫️
s100.pipeline.vector.stage.assemble 0.22 0.24 +6.2%
s100.pipeline.vector.stage.feature_xml 0.85 0.90 +6.7%
s100.pipeline.vector.stage.rule_select 0.20 0.20 -3.1% ▫️
s100.pipeline.vector.stage.sort 0.15 0.15 -0.1% ▫️
s100.pipeline.vector.stage.viewing_groups 0.36 0.36 -1.7% ▫️
s100.pipeline.vector.stage.xslt 3.29 3.28 -0.4% ▫️
s100.render.frame 0.74 0.75 +1.9% ▫️
s100.xslt.transform 1.37 1.35 -1.7% ▫️

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 57.78 54.14 -6.3% ▫️
s100.pipeline.features.in 7.00 7.00 +0.0% ▫️
s100.pipeline.stage.duration 1.03 1.00 -2.2% ▫️
s100.pipeline.stage.duration 3.11 3.14 +0.9% ▫️
s100.pipeline.stage.duration 1.08 1.06 -1.3% ▫️
s100.pipeline.stage.duration 0.05 0.05 -3.7% ▫️
s100.pipeline.stage.duration 0.08 0.08 -3.3% ▫️
s100.pipeline.stage.duration 52.05 48.49 -6.8% ▫️
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.84 2.16 -24.0%
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 11.76 10.54 -10.3%

s201-vector

Iteration statistics

Stat Baseline Candidate
Samples 20 20
Median (ms) 0.33 0.33
Baseline MAD (ms) 0.01
Δ median -0.4%
z (Δ/MAD) -0.12

Spans (sum of all iterations)

Span Baseline (ms) Candidate (ms) Delta Status
s100.pipeline.vector.process 7.34 7.29 -0.7% ▫️
s100.pipeline.vector.stage.assemble 0.20 0.17 -13.3%
s100.pipeline.vector.stage.feature_xml 0.86 0.89 +3.4% ▫️
s100.pipeline.vector.stage.rule_select 0.24 0.25 +4.4% ▫️
s100.pipeline.vector.stage.sort 0.09 0.09 -3.4% ▫️
s100.pipeline.vector.stage.viewing_groups 0.33 0.34 +5.5%
s100.pipeline.vector.stage.xslt 3.21 3.17 -1.1% ▫️
s100.render.frame 0.71 0.74 +4.4% ▫️
s100.xslt.transform 2.14 2.19 +2.4% ▫️

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 155.96 151.25 -3.0% ▫️
s100.pipeline.features.in 21.00 21.00 +0.0% ▫️
s100.pipeline.stage.duration 0.57 0.58 +1.5% ▫️
s100.pipeline.stage.duration 7.64 6.88 -9.9% ▫️
s100.pipeline.stage.duration 0.12 0.12 +3.4% ▫️
s100.pipeline.stage.duration 0.02 0.02 -2.0% ▫️
s100.pipeline.stage.duration 0.05 0.05 -2.7% ▫️
s100.pipeline.stage.duration 147.17 143.29 -2.6% ▫️
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.10 1.11 +0.5% ▫️
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.02 +112.2%
s100.symbol.resolve.duration 0.81 0.79 -3.2% ▫️
s100.xslt.transform.duration 26.31 26.59 +1.1% ▫️

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.

1 participant