Skip to content

Commit 00f1ae4

Browse files
HanSur94claude
andcommitted
ci: benchmark up to 500M points with adaptive iteration scaling
- Dataset sizes: 1M, 5M, 10M, 50M, 100M, 500M - Iterations scale down for larger sizes (20→2 downsample, 10→3 runs) to keep CI runtime within ~15 min budget - Free memory between sizes (500M = 8GB for x+y arrays) - 48 total metrics tracked (4 metrics × 6 sizes × mean+std) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent cc7ebe2 commit 00f1ae4

1 file changed

Lines changed: 26 additions & 8 deletions

File tree

scripts/run_ci_benchmark.m

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,19 @@ function run_ci_benchmark()
1010
% - Zoom cycle: set XLim + drawnow (interactive responsiveness)
1111
% - Downsample: minmax_downsample kernel
1212
%
13-
% Dataset sizes: 1M, 5M, 10M points
14-
% Iterations: 10 per metric (5 for instantiation/render due to cost)
13+
% Dataset sizes: 1M, 5M, 10M, 50M, 100M, 500M points
14+
% Iterations: scaled per size to keep CI runtime reasonable
1515

1616
addpath(fullfile(pwd, 'libs', 'FastPlot', 'private'));
1717

18-
sizes = [1e6, 5e6, 10e6];
19-
labels = {'1M', '5M', '10M'};
18+
sizes = [1e6, 5e6, 10e6, 50e6, 100e6, 500e6];
19+
labels = {'1M', '5M', '10M', '50M', '100M', '500M'};
2020

21-
N_DS = 20; % downsample iterations
22-
N_ZOOM = 20; % zoom cycles per run
23-
N_RUNS = 10; % runs for zoom/downsample stats
24-
N_INIT = 5; % runs for instantiation/render (heavier)
21+
% Scale iterations down for larger sizes to keep CI runtime reasonable
22+
N_DS_base = 20; % downsample iterations (base for 1M)
23+
N_ZOOM = 20; % zoom cycles per run
24+
N_RUNS_base = 10; % runs for zoom/downsample stats (base for 1M)
25+
N_INIT_base = 5; % runs for instantiation/render (base for 1M)
2526

2627
results = {};
2728

@@ -30,8 +31,22 @@ function run_ci_benchmark()
3031
lbl = labels{s};
3132
fprintf('\n========== %s points ==========\n', lbl);
3233

34+
% Scale iterations for larger sizes to keep total runtime manageable
35+
% ~15 min budget for full suite on CI
36+
if n <= 1e6
37+
N_DS = N_DS_base; N_RUNS = N_RUNS_base; N_INIT = N_INIT_base;
38+
elseif n <= 10e6
39+
N_DS = 10; N_RUNS = 5; N_INIT = 3;
40+
elseif n <= 100e6
41+
N_DS = 5; N_RUNS = 3; N_INIT = 2;
42+
else
43+
N_DS = 2; N_RUNS = 3; N_INIT = 2;
44+
end
45+
46+
fprintf(' Generating %s data points...\n', lbl);
3347
x = linspace(0, 100, n);
3448
y = sin(x * 2*pi / 10) + 0.5 * randn(1, n);
49+
fprintf(' Data ready (%.0f MB)\n', n * 16 / 1e6);
3550

3651
% --- Downsample benchmark ---
3752
t_ds = zeros(1, N_RUNS);
@@ -100,6 +115,9 @@ function run_ci_benchmark()
100115
close all force;
101116

102117
results = add_result(results, sprintf('Zoom cycle mean (%s)', lbl), 'ms', t_zoom * 1000);
118+
119+
% Free memory before next size (critical for 100M+ datasets)
120+
clear x y fp;
103121
end
104122

105123
% --- Write JSON ---

0 commit comments

Comments
 (0)