@@ -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