给 Rust CLI 量一次启动耗时,别再靠感觉
用户反馈命令“有点慢”,但我自己跑感觉不到。于是我在三个位置打点,把一次执行的耗时拆成了四段,问题立刻显形。
本文目录
启动耗时最容易被忽略的原因是它不在任何请求链路里。加几个 Instant 打点,成本几乎为零,收益是后面所有优化的判断依据。
rust
let t0 = Instant::now();
let args = parse_args();
let t1 = Instant::now();
let config = load_config(&args)?;
let t2 = Instant::now();
eprintln!("parse {:?} config {:?}", t1 - t0, t2 - t1);数据显示 78% 的时间花在配置加载:每次启动都去读一个远程配置,并且没有超时上限。加上本地缓存和 300ms 超时后,冷启动从 640ms 降到 90ms。