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:
|
pub mode_family_counts:
|
||||||
Vec<SmpSavePlacedStructureDynamicSideBufferNamePreludeModeFamilyCount>,
|
Vec<SmpSavePlacedStructureDynamicSideBufferNamePreludeModeFamilyCount>,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
|
pub name_pair_summaries:
|
||||||
|
Vec<SmpSavePlacedStructureDynamicSideBufferDominantProfileSpanNamePairSummary>,
|
||||||
|
#[serde(default)]
|
||||||
|
pub profile_span_counts:
|
||||||
|
Vec<SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixProfileSpanCount>,
|
||||||
|
#[serde(default)]
|
||||||
pub sample_rows: Vec<SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample>,
|
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)]
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
|
||||||
pub struct SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample {
|
pub struct SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample {
|
||||||
pub sample_index: usize,
|
pub sample_index: usize,
|
||||||
|
|
@ -4862,12 +4874,34 @@ fn build_infrastructure_asset_trace_report(
|
||||||
})
|
})
|
||||||
.map(|correlation| {
|
.map(|correlation| {
|
||||||
format!(
|
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_primary_name,
|
||||||
correlation.dominant_secondary_name,
|
correlation.dominant_secondary_name,
|
||||||
correlation.dominant_name_pair_count,
|
correlation.dominant_name_pair_count,
|
||||||
correlation.dominant_profile_span,
|
correlation.dominant_profile_span,
|
||||||
correlation.dominant_profile_span_count,
|
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
|
correlation
|
||||||
.sample_rows
|
.sample_rows
|
||||||
.iter()
|
.iter()
|
||||||
|
|
@ -4895,12 +4929,26 @@ fn build_infrastructure_asset_trace_report(
|
||||||
})
|
})
|
||||||
.map(|correlation| {
|
.map(|correlation| {
|
||||||
format!(
|
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_primary_name,
|
||||||
correlation.dominant_secondary_name,
|
correlation.dominant_secondary_name,
|
||||||
correlation.dominant_name_pair_count,
|
correlation.dominant_name_pair_count,
|
||||||
correlation.dominant_profile_span,
|
correlation.dominant_profile_span,
|
||||||
correlation.dominant_profile_span_count,
|
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
|
correlation
|
||||||
.sample_rows
|
.sample_rows
|
||||||
.iter()
|
.iter()
|
||||||
|
|
@ -14189,6 +14237,27 @@ fn parse_save_placed_structure_dynamic_side_buffer_probe(
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.collect(),
|
.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
|
sample_rows: rows
|
||||||
.iter()
|
.iter()
|
||||||
.take(8)
|
.take(8)
|
||||||
|
|
@ -25321,6 +25390,24 @@ mod tests {
|
||||||
count: 15,
|
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![
|
sample_rows: vec![
|
||||||
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample {
|
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample {
|
||||||
sample_index: 0,
|
sample_index: 0,
|
||||||
|
|
@ -25367,6 +25454,19 @@ mod tests {
|
||||||
count: 1,
|
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![
|
sample_rows: vec![
|
||||||
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample {
|
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample {
|
||||||
sample_index: 0,
|
sample_index: 0,
|
||||||
|
|
@ -25413,6 +25513,19 @@ mod tests {
|
||||||
count: 2,
|
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![
|
sample_rows: vec![
|
||||||
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample {
|
SmpSavePlacedStructureDynamicSideBufferNamePreludeCompactPrefixSample {
|
||||||
sample_index: 0,
|
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
|
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
|
the smaller outlier families inside that class, especially the `BallastCap`-style zero-like
|
||||||
rows and any remaining non-`0x0001 / 0xff` prelude candidates.
|
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`
|
The exact compact-prefix classes are explicit now too:
|
||||||
break into `9` `BallastCapST_Cap.3dp / Infrastructure` rows with compact prefix
|
`0xff0000ff / 0x0002 / 0xff` is a pure bridge class, `0xff000000 / {0x0001,0x0002} / 0xff`
|
||||||
`0xf3010100 / 0x0055 / 0x00` and candidate pattern `0x0055 / 0x00`, plus `1`
|
are pure bridge classes, `0xf3010100 / 0x0055 / 0x00` is a pure `BallastCap` class, and
|
||||||
`TrackCapST_Cap.3dp / Infrastructure` row with compact prefix `0xff0000ff / 0x0001 / 0xff`.
|
`0x0005d368 / 0x0001 / 0xff` is a pure one-row `TrackCap` class.
|
||||||
So the next infrastructure pass should target the `BallastCap` outlier family first instead of
|
That sharpens the remaining infrastructure unknowns considerably: the only mixed exact
|
||||||
spending time on the already-dominant bridge-section class.
|
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
|
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
|
`BallastCapST_Cap.3dp / Infrastructure` class across `18` rows, always preceded by a zero-length
|
||||||
prior profile span, while `0x0002 / 0xff` is a pure
|
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
|
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
|
on the smaller outlier families inside that class, especially the zero-like `BallastCap`-style
|
||||||
rows and any remaining non-`0x0001 / 0xff` prelude candidates.
|
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`
|
- The exact compact-prefix classes are explicit across the whole prelude now too:
|
||||||
break into `9` `BallastCapST_Cap.3dp / Infrastructure` rows with compact prefix
|
`0xff0000ff / 0x0002 / 0xff` is a pure bridge class, `0xff000000 / {0x0001,0x0002} / 0xff`
|
||||||
`0xf3010100 / 0x0055 / 0x00` and candidate pattern `0x0055 / 0x00`, plus `1`
|
are pure bridge classes, `0xf3010100 / 0x0055 / 0x00` is a pure `BallastCap` class, and
|
||||||
`TrackCapST_Cap.3dp / Infrastructure` row with compact prefix `0xff0000ff / 0x0001 / 0xff`.
|
`0x0005d368 / 0x0001 / 0xff` is a pure one-row `TrackCap` class.
|
||||||
So the next infrastructure slice should target the `BallastCap` outlier family first, not the
|
- That sharpens the remaining infrastructure unknowns considerably: the only mixed exact
|
||||||
already-dominant bridge-section class.
|
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`
|
- 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
|
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
|
zero-length prior profile span, while `0x0002 / 0xff` is a pure
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue