@@ -67,7 +67,7 @@ for nq in QUERY_SIZES
6767 clear_cubic_cache! ()
6868 cubic_interp (x, y, xi) # prime cache
6969 label = lpad (nq, 5 , ' 0' ) # 00001, 00100, 10000
70- b = @benchmarkable cubic_interp ($ x, $ y, $ xi)
70+ b = @benchmarkable cubic_interp ($ x, $ y, $ xi) setup = (GC . gc ())
7171 b. params. evals = nq >= 10_000 ? EVALS_SLOW : EVALS_MED
7272 suite[" 1_cubic_oneshot" ][" q$label " ] = b
7373end
@@ -78,7 +78,7 @@ for ng in GRID_SIZES
7878 y_grid = sin .(x_grid) .+ 0.1 .* collect (x_grid)
7979 clear_cubic_cache! ()
8080 label = lpad (ng, 4 , ' 0' ) # 0010, 0100, 1000
81- b = @benchmarkable cubic_interp ($ x_grid, $ y_grid; autocache= false )
81+ b = @benchmarkable cubic_interp ($ x_grid, $ y_grid; autocache= false ) setup = (GC . gc ())
8282 b. params. evals = ng >= 1000 ? EVALS_SLOW : EVALS_MED
8383 suite[" 2_cubic_construct" ][" g$label " ] = b
8484end
@@ -90,7 +90,7 @@ for nq in QUERY_SIZES
9090 label = lpad (nq, 5 , ' 0' )
9191 # In-place: pre-allocate output to measure pure computation
9292 out = Vector {Float64} (undef, nq)
93- b = @benchmarkable $ itp_cubic ($ out, $ xi)
93+ b = @benchmarkable $ itp_cubic ($ out, $ xi) setup = (GC . gc ())
9494 b. params. evals = nq == 1 ? EVALS_FAST : nq == 100 ? EVALS_MED : EVALS_SLOW
9595 suite[" 3_cubic_eval" ][" q$label " ] = b
9696end
@@ -105,7 +105,7 @@ println("Setting up linear benchmarks...")
105105for nq in QUERY_SIZES
106106 xi = nq == 1 ? [5.0 ] : collect (range (0.1 , 9.9 , nq))
107107 label = lpad (nq, 5 , ' 0' )
108- b = @benchmarkable linear_interp ($ x, $ y, $ xi)
108+ b = @benchmarkable linear_interp ($ x, $ y, $ xi) setup = (GC . gc ())
109109 b. params. evals = nq == 1 ? EVALS_FAST : nq == 100 ? EVALS_MED : EVALS_SLOW
110110 suite[" 4_linear_oneshot" ][" q$label " ] = b
111111end
@@ -115,7 +115,7 @@ for ng in GRID_SIZES
115115 x_grid = range (0.0 , 10.0 , ng)
116116 y_grid = sin .(x_grid) .+ 0.1 .* collect (x_grid)
117117 label = lpad (ng, 4 , ' 0' )
118- b = @benchmarkable linear_interp ($ x_grid, $ y_grid)
118+ b = @benchmarkable linear_interp ($ x_grid, $ y_grid) setup = (GC . gc ())
119119 b. params. evals = EVALS_FAST
120120 suite[" 5_linear_construct" ][" g$label " ] = b
121121end
@@ -127,7 +127,7 @@ for nq in QUERY_SIZES
127127 label = lpad (nq, 5 , ' 0' )
128128 # In-place: pre-allocate output to measure pure computation
129129 out = Vector {Float64} (undef, nq)
130- b = @benchmarkable $ itp_linear ($ out, $ xi)
130+ b = @benchmarkable $ itp_linear ($ out, $ xi) setup = (GC . gc ())
131131 b. params. evals = nq == 1 ? EVALS_FAST : nq == 100 ? EVALS_MED : EVALS_SLOW
132132 suite[" 6_linear_eval" ][" q$label " ] = b
133133end
@@ -142,23 +142,23 @@ const xq_vec1 = [5.0] # 1-element vector for comparison
142142const out_vec1 = Vector {Float64} (undef, 1 ) # Pre-allocated output for vec1
143143
144144# 7. Cubic: Range grid - scalar vs vec1
145- let b = @benchmarkable $ itp_cubic ($ xq_scalar)
145+ let b = @benchmarkable $ itp_cubic ($ xq_scalar) setup = (GC . gc ())
146146 b. params. evals = EVALS_FAST
147147 suite[" 7_cubic_range" ][" scalar_query" ] = b
148148end
149149
150- let b = @benchmarkable $ itp_cubic ($ out_vec1, $ xq_vec1)
150+ let b = @benchmarkable $ itp_cubic ($ out_vec1, $ xq_vec1) setup = (GC . gc ())
151151 b. params. evals = EVALS_FAST
152152 suite[" 7_cubic_range" ][" vec1_query" ] = b
153153end
154154
155155# 7. Cubic: Vector grid - scalar vs vec1
156- let b = @benchmarkable $ itp_cubic_vec ($ xq_scalar)
156+ let b = @benchmarkable $ itp_cubic_vec ($ xq_scalar) setup = (GC . gc ())
157157 b. params. evals = EVALS_FAST
158158 suite[" 7_cubic_vec" ][" scalar_query" ] = b
159159end
160160
161- let b = @benchmarkable $ itp_cubic_vec ($ out_vec1, $ xq_vec1)
161+ let b = @benchmarkable $ itp_cubic_vec ($ out_vec1, $ xq_vec1) setup = (GC . gc ())
162162 b. params. evals = EVALS_FAST
163163 suite[" 7_cubic_vec" ][" vec1_query" ] = b
164164end
@@ -180,7 +180,7 @@ for ns in MULTI_SERIES
180180 # Construction benchmark
181181 clear_cubic_cache! ()
182182 cubic_interp (x, ys) # prime cache
183- let b = @benchmarkable cubic_interp ($ x, $ ys)
183+ let b = @benchmarkable cubic_interp ($ x, $ ys) setup = (GC . gc ())
184184 b. params. evals = ns >= 50 ? EVALS_SLOW : EVALS_MED
185185 suite[" 8_cubic_multi" ][" construct_s$(slabel) _q$(qlabel) " ] = b
186186 end
@@ -191,7 +191,7 @@ for ns in MULTI_SERIES
191191 xq_multi = collect (range (0.1 , 9.9 , N_QUERY_MULTI))
192192 # Pre-allocate outputs: one vector per series, each of length N_QUERY_MULTI
193193 outputs_multi = [Vector {Float64} (undef, N_QUERY_MULTI) for _ in 1 : ns]
194- let b = @benchmarkable $ mitp ($ outputs_multi, $ xq_multi)
194+ let b = @benchmarkable $ mitp ($ outputs_multi, $ xq_multi) setup = (GC . gc ())
195195 b. params. evals = ns >= 50 ? EVALS_SLOW : EVALS_MED
196196 suite[" 8_cubic_multi" ][" eval_s$(slabel) _q$(qlabel) " ] = b
197197 end
@@ -203,7 +203,7 @@ for ns in MULTI_SERIES
203203 for xq in $ xq_multi
204204 $ mitp ($ out_scalar, xq)
205205 end
206- end
206+ end setup = (GC . gc ())
207207 b. params. evals = ns >= 50 ? EVALS_SLOW : EVALS_MED
208208 suite[" 8_cubic_multi" ][" eval_s$(slabel) _q$(qlabel) _scalar_loop" ] = b
209209 end
0 commit comments