From 20a05bdb0d4d0d1d5672dcfc5b6204b75f8b7108 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sat, 11 Oct 2025 14:40:59 +0200 Subject: [PATCH] sort: add a bench for long line --- src/uu/sort/benches/sort_bench.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/uu/sort/benches/sort_bench.rs b/src/uu/sort/benches/sort_bench.rs index 43461b2fb..a4da0ce6c 100644 --- a/src/uu/sort/benches/sort_bench.rs +++ b/src/uu/sort/benches/sort_bench.rs @@ -188,6 +188,34 @@ fn sort_unique_locale(bencher: Bencher, num_lines: usize) { }); } +/// Benchmark sorting with very long lines exceeding START_BUFFER_SIZE (8000 bytes) +#[divan::bench(args = [16_0000])] +fn sort_long_line(bencher: Bencher, line_size: usize) { + // Create files with very long lines (16KB) to test buffer handling + let mut data_a = vec![b'b'; line_size]; + data_a.push(b'\n'); + + let mut data_b = vec![b'a'; line_size]; + data_b.push(b'\n'); + + let file_a = setup_test_file(&data_a); + let file_b = setup_test_file(&data_b); + let output_file = NamedTempFile::new().unwrap(); + let output_path = output_file.path().to_str().unwrap(); + + bencher.bench(|| { + black_box(run_util_function( + uumain, + &[ + file_a.to_str().unwrap(), + file_b.to_str().unwrap(), + "-o", + output_path, + ], + )); + }); +} + fn main() { divan::main(); }