Trace infrastructure mixed exact prefix classes
This commit is contained in:
parent
0eb1b2386e
commit
7f0e863185
3 changed files with 148 additions and 14 deletions
|
|
@ -2221,9 +2221,21 @@ pub struct SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixCorrel
|
|||
pub mode_family_counts:
|
||||
Vec<SmpSavePlacedStructureDynamicSideBufferNamePreludeModeFamilyCount>,
|
||||
#[serde(default)]
|
||||
pub name_pair_summaries:
|
||||
Vec<SmpSavePlacedStructureDynamicSideBufferDominantProfileSpanNamePairSummary>,
|
||||
#[serde(default)]
|
||||
pub profile_span_counts:
|
||||
Vec<SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixProfileSpanCount>,
|
||||
#[serde(default)]
|
||||
pub sample_rows: Vec<SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixProfileSpanCount {
|
||||
pub previous_profile_chunk_len_to_next_name_or_end: usize,
|
||||
pub count: usize,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub struct SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample {
|
||||
pub sample_index: usize,
|
||||
|
|
@ -4862,12 +4874,34 @@ fn build_infrastructure_asset_trace_report(
|
|||
})
|
||||
.map(|correlation| {
|
||||
format!(
|
||||
"the exact 0xff0000ff/0x0001/0xff compact-prefix class is now explicit: dominant name={:?}/{:?} x{}, dominant span={:?} x{}, and sample rows={:?}",
|
||||
"the exact 0xff0000ff/0x0001/0xff compact-prefix class is now explicit: dominant name={:?}/{:?} x{}, dominant span={:?} x{}, mode counts={:?}, name-pair counts={:?}, span counts={:?}, and sample rows={:?}",
|
||||
correlation.dominant_primary_name,
|
||||
correlation.dominant_secondary_name,
|
||||
correlation.dominant_name_pair_count,
|
||||
correlation.dominant_profile_span,
|
||||
correlation.dominant_profile_span_count,
|
||||
correlation
|
||||
.mode_family_counts
|
||||
.iter()
|
||||
.map(|mode| format!("{}:{}", mode.mode_family, mode.count))
|
||||
.collect::<Vec<_>>(),
|
||||
correlation
|
||||
.name_pair_summaries
|
||||
.iter()
|
||||
.map(|entry| format!(
|
||||
"{:?}/{:?}:{}",
|
||||
entry.primary_name, entry.secondary_name, entry.count
|
||||
))
|
||||
.collect::<Vec<_>>(),
|
||||
correlation
|
||||
.profile_span_counts
|
||||
.iter()
|
||||
.map(|entry| format!(
|
||||
"0x{:x}:{}",
|
||||
entry.previous_profile_chunk_len_to_next_name_or_end,
|
||||
entry.count
|
||||
))
|
||||
.collect::<Vec<_>>(),
|
||||
correlation
|
||||
.sample_rows
|
||||
.iter()
|
||||
|
|
@ -4895,12 +4929,26 @@ fn build_infrastructure_asset_trace_report(
|
|||
})
|
||||
.map(|correlation| {
|
||||
format!(
|
||||
"the exact 0xff0000ff/0x0002/0xff compact-prefix class is now explicit too: dominant name={:?}/{:?} x{}, dominant span={:?} x{}, and sample rows={:?}",
|
||||
"the exact 0xff0000ff/0x0002/0xff compact-prefix class is now explicit too: dominant name={:?}/{:?} x{}, dominant span={:?} x{}, mode counts={:?}, span counts={:?}, and sample rows={:?}",
|
||||
correlation.dominant_primary_name,
|
||||
correlation.dominant_secondary_name,
|
||||
correlation.dominant_name_pair_count,
|
||||
correlation.dominant_profile_span,
|
||||
correlation.dominant_profile_span_count,
|
||||
correlation
|
||||
.mode_family_counts
|
||||
.iter()
|
||||
.map(|mode| format!("{}:{}", mode.mode_family, mode.count))
|
||||
.collect::<Vec<_>>(),
|
||||
correlation
|
||||
.profile_span_counts
|
||||
.iter()
|
||||
.map(|entry| format!(
|
||||
"0x{:x}:{}",
|
||||
entry.previous_profile_chunk_len_to_next_name_or_end,
|
||||
entry.count
|
||||
))
|
||||
.collect::<Vec<_>>(),
|
||||
correlation
|
||||
.sample_rows
|
||||
.iter()
|
||||
|
|
@ -14189,6 +14237,27 @@ fn parse_save_placed_structure_dynamic_side_buffer_probe(
|
|||
}
|
||||
})
|
||||
.collect(),
|
||||
name_pair_summaries: name_pair_counts
|
||||
.into_iter()
|
||||
.map(|((primary_name, secondary_name), count)| {
|
||||
SmpSavePlacedStructureDynamicSideBufferDominantProfileSpanNamePairSummary {
|
||||
primary_name,
|
||||
secondary_name,
|
||||
count,
|
||||
}
|
||||
})
|
||||
.collect(),
|
||||
profile_span_counts: profile_span_counts
|
||||
.into_iter()
|
||||
.map(
|
||||
|(previous_profile_chunk_len_to_next_name_or_end, count)| {
|
||||
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixProfileSpanCount {
|
||||
previous_profile_chunk_len_to_next_name_or_end,
|
||||
count,
|
||||
}
|
||||
},
|
||||
)
|
||||
.collect(),
|
||||
sample_rows: rows
|
||||
.iter()
|
||||
.take(8)
|
||||
|
|
@ -25321,6 +25390,24 @@ mod tests {
|
|||
count: 15,
|
||||
},
|
||||
],
|
||||
name_pair_summaries: vec![
|
||||
SmpSavePlacedStructureDynamicSideBufferDominantProfileSpanNamePairSummary {
|
||||
primary_name: Some("TunnelSTBrick_Section.3dp".to_string()),
|
||||
secondary_name: Some("Infrastructure".to_string()),
|
||||
count: 15,
|
||||
},
|
||||
SmpSavePlacedStructureDynamicSideBufferDominantProfileSpanNamePairSummary {
|
||||
primary_name: Some("TrackCapST_Cap.3dp".to_string()),
|
||||
secondary_name: Some("Infrastructure".to_string()),
|
||||
count: 2,
|
||||
},
|
||||
],
|
||||
profile_span_counts: vec![
|
||||
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixProfileSpanCount {
|
||||
previous_profile_chunk_len_to_next_name_or_end: 3,
|
||||
count: 17,
|
||||
},
|
||||
],
|
||||
sample_rows: vec![
|
||||
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample {
|
||||
sample_index: 0,
|
||||
|
|
@ -25367,6 +25454,19 @@ mod tests {
|
|||
count: 1,
|
||||
},
|
||||
],
|
||||
name_pair_summaries: vec![
|
||||
SmpSavePlacedStructureDynamicSideBufferDominantProfileSpanNamePairSummary {
|
||||
primary_name: Some("TunnelSTBrick_Section.3dp".to_string()),
|
||||
secondary_name: Some("Infrastructure".to_string()),
|
||||
count: 1,
|
||||
},
|
||||
],
|
||||
profile_span_counts: vec![
|
||||
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixProfileSpanCount {
|
||||
previous_profile_chunk_len_to_next_name_or_end: 0x27,
|
||||
count: 1,
|
||||
},
|
||||
],
|
||||
sample_rows: vec![
|
||||
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample {
|
||||
sample_index: 0,
|
||||
|
|
@ -25413,6 +25513,19 @@ mod tests {
|
|||
count: 2,
|
||||
},
|
||||
],
|
||||
name_pair_summaries: vec![
|
||||
SmpSavePlacedStructureDynamicSideBufferDominantProfileSpanNamePairSummary {
|
||||
primary_name: Some("BridgeSTWood_Section.3dp".to_string()),
|
||||
secondary_name: Some("Infrastructure".to_string()),
|
||||
count: 2,
|
||||
},
|
||||
],
|
||||
profile_span_counts: vec![
|
||||
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixProfileSpanCount {
|
||||
previous_profile_chunk_len_to_next_name_or_end: 0x27,
|
||||
count: 2,
|
||||
},
|
||||
],
|
||||
sample_rows: vec![
|
||||
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample {
|
||||
sample_index: 0,
|
||||
|
|
|
|||
|
|
@ -2986,12 +2986,19 @@ The low helper strip beneath that shared family is tighter now too: `0x0052ecd0`
|
|||
next infrastructure pass should stop treating all short rows as equally ambiguous and focus on
|
||||
the smaller outlier families inside that class, especially the `BallastCap`-style zero-like
|
||||
rows and any remaining non-`0x0001 / 0xff` prelude candidates.
|
||||
Those outliers are explicit now too: the remaining `10` short-span rows on grounded `q.gms`
|
||||
break into `9` `BallastCapST_Cap.3dp / Infrastructure` rows with compact prefix
|
||||
`0xf3010100 / 0x0055 / 0x00` and candidate pattern `0x0055 / 0x00`, plus `1`
|
||||
`TrackCapST_Cap.3dp / Infrastructure` row with compact prefix `0xff0000ff / 0x0001 / 0xff`.
|
||||
So the next infrastructure pass should target the `BallastCap` outlier family first instead of
|
||||
spending time on the already-dominant bridge-section class.
|
||||
The exact compact-prefix classes are explicit now too:
|
||||
`0xff0000ff / 0x0002 / 0xff` is a pure bridge class, `0xff000000 / {0x0001,0x0002} / 0xff`
|
||||
are pure bridge classes, `0xf3010100 / 0x0055 / 0x00` is a pure `BallastCap` class, and
|
||||
`0x0005d368 / 0x0001 / 0xff` is a pure one-row `TrackCap` class.
|
||||
That sharpens the remaining infrastructure unknowns considerably: the only mixed exact
|
||||
compact-prefix classes left on grounded `q.gms` are `0x000055f3 / 0x0001 / 0xff` and
|
||||
`0xff0000ff / 0x0001 / 0xff`.
|
||||
The current `0x000055f3 / 0x0001 / 0xff` class is tunnel-dominant and stays entirely on prior
|
||||
profile span `0x03`, while the current `0xff0000ff / 0x0001 / 0xff` class is `TrackCap`-
|
||||
dominant but still carries `4` tunnel rows spread across many spans.
|
||||
So the next infrastructure pass should stop treating the remaining frontier as a generic
|
||||
“mixed 0x06/outlier” problem and instead target the owning constructor/restore semantics for
|
||||
those two exact mixed compact-prefix classes.
|
||||
The candidate-pattern classes are explicit now too: `0x0055 / 0x00` is a pure
|
||||
`BallastCapST_Cap.3dp / Infrastructure` class across `18` rows, always preceded by a zero-length
|
||||
prior profile span, while `0x0002 / 0xff` is a pure
|
||||
|
|
|
|||
|
|
@ -180,12 +180,26 @@ Working rule:
|
|||
next infrastructure slice should stop treating the `0x06` class as uniformly ambiguous and focus
|
||||
on the smaller outlier families inside that class, especially the zero-like `BallastCap`-style
|
||||
rows and any remaining non-`0x0001 / 0xff` prelude candidates.
|
||||
- Those outliers are explicit now too: the remaining `10` short-span rows on grounded `q.gms`
|
||||
break into `9` `BallastCapST_Cap.3dp / Infrastructure` rows with compact prefix
|
||||
`0xf3010100 / 0x0055 / 0x00` and candidate pattern `0x0055 / 0x00`, plus `1`
|
||||
`TrackCapST_Cap.3dp / Infrastructure` row with compact prefix `0xff0000ff / 0x0001 / 0xff`.
|
||||
So the next infrastructure slice should target the `BallastCap` outlier family first, not the
|
||||
already-dominant bridge-section class.
|
||||
- The exact compact-prefix classes are explicit across the whole prelude now too:
|
||||
`0xff0000ff / 0x0002 / 0xff` is a pure bridge class, `0xff000000 / {0x0001,0x0002} / 0xff`
|
||||
are pure bridge classes, `0xf3010100 / 0x0055 / 0x00` is a pure `BallastCap` class, and
|
||||
`0x0005d368 / 0x0001 / 0xff` is a pure one-row `TrackCap` class.
|
||||
- That sharpens the remaining infrastructure unknowns considerably: the only mixed exact
|
||||
compact-prefix classes left on grounded `q.gms` are `0x000055f3 / 0x0001 / 0xff` and
|
||||
`0xff0000ff / 0x0001 / 0xff`.
|
||||
- The current `0x000055f3 / 0x0001 / 0xff` class is tunnel-dominant:
|
||||
`TunnelSTBrick_Section.3dp / Infrastructure:13`, `TunnelSTBrick_Cap.3dp / Infrastructure:4`,
|
||||
`TrackCapST_Cap.3dp / Infrastructure:0` in the exact-prefix correlation, with all `17` rows
|
||||
staying on prior profile span `0x03`.
|
||||
- The current `0xff0000ff / 0x0001 / 0xff` class is `TrackCap`-dominant but still carries `4`
|
||||
tunnel rows:
|
||||
`TrackCapST_Cap.3dp / Infrastructure:18`,
|
||||
`TunnelSTBrick_Cap.3dp / Infrastructure:2`,
|
||||
`TunnelSTBrick_Section.3dp / Infrastructure:2`.
|
||||
Its rows are spread across many spans rather than one dominant restore span.
|
||||
- So the next infrastructure slice should stop treating the remaining frontier as a generic
|
||||
“mixed 0x06/outlier” problem and instead target the owning constructor/restore semantics for
|
||||
those two exact mixed compact-prefix classes.
|
||||
- The candidate-pattern classes are now explicit across the whole stream too: `0x0055 / 0x00`
|
||||
is a pure `BallastCapST_Cap.3dp / Infrastructure` class across `18` rows, always preceded by a
|
||||
zero-length prior profile span, while `0x0002 / 0xff` is a pure
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue