Closed tobz closed 3 weeks ago
Run ID: 7bd161a1-36c1-464b-a2aa-d7593a9f0c57
Baseline: 7.52.0 Comparison: 7.52.1
Performance changes are noted in the perf column of each table:
Confidence level: 90.00% Effect size tolerance: |Δ mean %| ≥ 5.00%
There were no significant changes in experiment optimization goals at this confidence level and effect size tolerance.
Run ID: f9a8c089-6a23-4bcf-b3ab-8d2b436971ec
Baseline: 55e6b624b853261d7a0e8047d52e27e6c07e458f Comparison: 3d8977d7ea81e2a32394f59d2ac3d00b152871d2
Performance changes are noted in the perf column of each table:
Confidence level: 90.00% Effect size tolerance: |Δ mean %| ≥ 5.00%
There were no significant changes in experiment optimization goals at this confidence level and effect size tolerance.
experiment | link(s) |
---|---|
dsd_uds_100mb_250k_contexts | [Profiling (ADP)] [Profiling (DSD)] [SMP Dashboard] |
dsd_uds_100mb_3k_contexts | [Profiling (ADP)] [Profiling (DSD)] [SMP Dashboard] |
dsd_uds_100mb_3k_contexts_distributions_only | [Profiling (ADP)] [Profiling (DSD)] [SMP Dashboard] |
dsd_uds_10mb_3k_contexts | [Profiling (ADP)] [Profiling (DSD)] [SMP Dashboard] |
dsd_uds_1mb_3k_contexts | [Profiling (ADP)] [Profiling (DSD)] [SMP Dashboard] |
dsd_uds_1mb_50k_contexts | [Profiling (ADP)] [Profiling (DSD)] [SMP Dashboard] |
dsd_uds_1mb_50k_contexts_memlimit | [Profiling (ADP)] [Profiling (DSD)] [SMP Dashboard] |
dsd_uds_500mb_3k_contexts | [Profiling (ADP)] [Profiling (DSD)] [SMP Dashboard] |
dsd_uds_512kb_3k_contexts | [Profiling (ADP)] [Profiling (DSD)] [SMP Dashboard] |
dsd_uds_50mb_10k_contexts_no_inlining (ADP only) | [Profiling (ADP)] [SMP Dashboard] |
dsd_uds_50mb_10k_contexts_no_inlining_no_allocs (ADP only) | [Profiling (ADP)] [SMP Dashboard] |
Context
In #161, we mention that we currently don't handle duplicate tags in metrics, which is to say we don't do anything special to avoid or cope with them. This is mostly relevant to context hashing, as our use of XOR hashing for tags (in order to be oblivious to the order of the tags themselves) presents an issue when duplicate tags are present, as it would potentially cancel out a previous tags hash, leaving us with a subpar context hash overall.
Solution
This PR adds proper handling of duplicate tags by ignoring them while hashing a context. We introduce a simple bit of "have we seen this before?" logic, tracking seen hashes for each operation using a reusable
HashSet<T>
stored onContextResolver
.This has necessitated some slight reorganization of how we create
ContextRef<'a, I>
but is otherwise slightly cleaner and line count equivalent with the prior approach.