Repository navigation
Conversation
Filter empty associations before constructing typed slices while preserving the original grouping policy and windows. Keep IncludeEmpty as the default and document consumer and cache preconditions. Add Arrow-backed integration coverage for Pair and Triple policies, iterator copies, cache refresh, filtered grouping, bindings and window metadata.
Remove the explanatory comments added with the SkipEmpty policy and its integration coverage. Keep existing comments, license headers and code unchanged.
Use the canonical ALICE O2 copyright wording in the integration test. Align the empty eligibility structs with clang-format 20.
Contributor
Author
|
This improves a lot for the event-mixing when we handle the very rare daughter case, such as |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
GroupedCombinationscurrently constructs typed associated slices before the consumer can check whether they are empty. For sparse associations, repeatedly constructing these slices can dominate the mixing workload, even when the consumer immediately discards empty tuples.This change adds an explicit
GroupedSlicePolicy::SkipEmptyoption. It checks association counts through the existing sortedSliceCachebefore constructing typed slices.IncludeEmptyremains the default, preserving the existing yielded stream.Consumers should enable this option only when processing an empty-associated tuple has no observable effects, including normalization, counters or window bookkeeping.
Performance
A three-run evaluation of an
Omega2012mixed-event workload on macOS arm64, using a fixed seven-DF input and mixing depth 10, gave the following mean CPU times:Xi, K0sXi1530, KThese are complete local DPL CPU times (
user + system, including child processes). All valid measurements were included. TheXi, K0sbaseline had a coefficient of variation of 5.19%.The input has sparse
cascadeassociations, so these gains are workload-dependent. Dense inputs may benefit less or incur additional cache-lookup overhead.Validation