# UNDF: UNDF-2026-000000909 # dask-project-0002: methods.py describe_aggregate column name dedup O(C²) # CWE-407 — Algorithmic Complexity # # In describe_aggregate(), column names are deduplicated using # `if name not in names` where names is a list, making it O(C²) where # C = total number of column names across all describe results. # # Fix: maintain a parallel set for O(1) membership. # Severity: LOW-MEDIUM (describe path, C typically <100 but can grow with wide DataFrames) # Speedup: ~10x at C=500 # # File: dask/dataframe/methods.py # Function: describe_aggregate --- a/dask/dataframe/methods.py +++ b/dask/dataframe/methods.py @@ -180,9 +180,11 @@ # arrange categorical and numeric stats names = [] + names_set = set() values_indexes = sorted((x.index for x in values), key=len) for idxnames in values_indexes: for name in idxnames: - if name not in names: + if name not in names_set: names.append(name) + names_set.add(name)