用途:为 shell 脚本与命令行工具建立可重复的性能基准,做统计分析与基线/优化后对比,并自动校验性能目标。资料称其模式来自 unix-goto 项目,强调“性能优先”,先定目标再测量、用统计而非单次运行、按真实规模测试。
主要能力:提供基准模板与 bench-helpers.sh 辅助库,含高精度计时 bench_time_ms、预热 bench_warmup、多次运行 bench_run、统计计算 bench_calculate_stats(输出 min,max,mean,median,stddev 的 CSV)、加速比 bench_compare、百分位 bench_percentile、目标断言 bench_assert_target、改进断言 bench_assert_improvement、结果写入 bench_save_result 到 results.csv、历史读取 bench_load_results,以及工作区创建 bench_create_workspace(tiny/small/medium/large/xlarge,5 到 1000 文件夹)与嵌套工作区生成、清理。
资料给出的目标示例:缓存导航 <100ms、书签查找 <10ms、缓存加速 >20x、缓存命中率 >90%、缓存构建 <5s;示例称实测缓存导航 26ms、缓存构建 3-5s、命中率 92-95%、加速比 8x(仍在改进中)。
使用方式:在基准脚本中 source bench-helpers.sh 与目标模块,设置 SCRIPT_DIR、REPO_DIR,调用 bench_header、bench_warmup、bench_run、bench_print_stats、bench_compare、bench_assert_target、bench_save_result,并用 bench_cleanup_workspace 清理临时目录;依赖 date、mktemp,标准差用 bc 或 awk 计算。
限制:不适用于应用级性能剖析、生产监控(APM)、Web 服务负载测试(JMeter、k6 等)或简单计时。输出目录默认 $HOME/.goto_benchmarks,可通过 BENCH_RESULTS_DIR 等环境变量调整。