@@ -131,49 +131,3 @@ def test_eq_missing_not_slower_than_element_wise_for_list_columns() -> None:
131131 f"({ mean_time_cond :.3f} s vs { mean_time_eq :.3f} s). "
132132 f"Expected comparable performance since list<i64> should use eq_missing directly."
133133 )
134-
135-
136- def test_eq_missing_not_slower_than_field_wise_for_struct_columns () -> None :
137- """Ensure that comparing struct columns with non-tolerance fields via eq_missing()
138- is not slower than the field-wise decomposition path."""
139- n_rows = 500_000
140- n_fields = 20
141- num_runs_measured = 10
142- num_runs_warmup = 2
143-
144- col_left = f"val_{ Side .LEFT } "
145- col_right = f"val_{ Side .RIGHT } "
146- struct_data = [{f"f{ i } " : row + i for i in range (n_fields )} for row in range (n_rows )]
147- df = pl .DataFrame ({col_left : struct_data , col_right : struct_data })
148-
149- times_eq = []
150- times_cond = []
151- for _ in range (num_runs_warmup + num_runs_measured ):
152- start = time .perf_counter ()
153- df .select (pl .col (col_left ).eq_missing (pl .col (col_right ))).to_series ()
154- times_eq .append (time .perf_counter () - start )
155-
156- start = time .perf_counter ()
157- df .select (
158- condition_equal_columns (
159- column = "val" ,
160- dtype_left = df .schema [col_left ],
161- dtype_right = df .schema [col_right ],
162- max_list_length = None ,
163- abs_tol = ABS_TOL_DEFAULT ,
164- rel_tol = REL_TOL_DEFAULT ,
165- abs_tol_temporal = ABS_TOL_TEMPORAL_DEFAULT ,
166- )
167- ).to_series ()
168- times_cond .append (time .perf_counter () - start )
169-
170- mean_time_eq = statistics .mean (times_eq [num_runs_warmup :])
171- mean_time_cond = statistics .mean (times_cond [num_runs_warmup :])
172-
173- ratio = mean_time_cond / mean_time_eq
174- assert ratio < 1.25 , (
175- f"condition_equal_columns was { ratio :.1f} x slower than eq_missing "
176- f"({ mean_time_cond :.3f} s vs { mean_time_eq :.3f} s). "
177- f"Expected comparable performance since struct<i64> fields should use "
178- f"eq_missing directly."
179- )
0 commit comments