fix(bench): warn when clear_file_cache fails instead of silently skipping cold benchmarks (closes #41)

This commit is contained in:
dailz
2026-06-05 17:28:57 +08:00
parent 5656b26d7b
commit 502479677b

View File

@@ -40,35 +40,42 @@ pub fn run(config: &BenchConfig) -> Vec<BenchmarkResult> {
)); ));
if !config.quick_mode { if !config.quick_mode {
if MetricsCollector::clear_file_cache(&config.test_file).is_ok() { match MetricsCollector::clear_file_cache(&config.test_file) {
results.extend(bench_cold_open::<MmapReaderPlain>("mmap", "plain", config)); Ok(()) => {
results.extend(bench_cold_open::<MmapReaderSequential>( results.extend(bench_cold_open::<MmapReaderPlain>("mmap", "plain", config));
"mmap", results.extend(bench_cold_open::<MmapReaderSequential>(
"sequential", "mmap",
config, "sequential",
)); config,
results.extend(bench_cold_open::<MmapReaderRandom>( ));
"mmap", "random", config, results.extend(bench_cold_open::<MmapReaderRandom>(
)); "mmap", "random", config,
results.extend(bench_cold_open::<MmapReaderPopulate>( ));
"mmap", "populate", config, results.extend(bench_cold_open::<MmapReaderPopulate>(
)); "mmap", "populate", config,
results.extend(bench_cold_open::<MmapReaderPhaseAware>( ));
"mmap", results.extend(bench_cold_open::<MmapReaderPhaseAware>(
"phase_aware", "mmap",
config, "phase_aware",
)); config,
results.extend(bench_cold_open::<PreadReaderPlain>( ));
"pread", "plain", config, results.extend(bench_cold_open::<PreadReaderPlain>(
)); "pread", "plain", config,
results.extend(bench_cold_open::<PreadReaderRandom>( ));
"pread", "random", config, results.extend(bench_cold_open::<PreadReaderRandom>(
)); "pread", "random", config,
results.extend(bench_cold_open::<PreadReaderSequential>( ));
"pread", results.extend(bench_cold_open::<PreadReaderSequential>(
"sequential", "pread",
config, "sequential",
)); config,
));
}
Err(e) => {
eprintln!(
"WARNING: Failed to clear file cache; skipping cold startup benchmarks because results would not be cold: {e}"
);
}
} }
} }
@@ -88,8 +95,15 @@ fn bench_cold_open<B: FileReaderBackend>(
variant: &str, variant: &str,
config: &BenchConfig, config: &BenchConfig,
) -> Vec<BenchmarkResult> { ) -> Vec<BenchmarkResult> {
let _ = MetricsCollector::clear_file_cache(&config.test_file); match MetricsCollector::clear_file_cache(&config.test_file) {
open_and_measure::<B>(backend, variant, &config.test_file, "cold_open") Ok(()) => open_and_measure::<B>(backend, variant, &config.test_file, "cold_open"),
Err(e) => {
eprintln!(
"WARNING: Failed to clear file cache for {backend}/{variant}; skipping cold benchmark: {e}"
);
Vec::new()
}
}
} }
fn open_and_measure<B: FileReaderBackend>( fn open_and_measure<B: FileReaderBackend>(