用途:该技能用于对 Rust 代码进行性能剖析与优化,核心原则是先剖析、再针对单一已测量瓶颈改动,并记录工作负载、工具、目标、工具链、构建配置与前后数值。
主要能力:
- 测量优化构建而非 debug 构建,示例配置为 [profile.profiling] inherits = "release"、debug = "line-tables-only";微基准用 Criterion,必要时用 std::hint::black_box;CPU 剖析可用仓库自带 profiler、samply、perf、Instruments 或 cargo flamegraph;CPU 样本指向分配时用 DHAT 或分配剖析器。
- 分配与所有权:用 Vec::with_capacity、String::with_capacity、HashMap::with_capacity 预分配;替换已有值时用 clone_from 复用分配;边界处按证据使用 Cow;SmallVec 等内联集合仅在长度分布通常适配内联时使用;用 size_of、-Zprint-type-sizes 或类型大小工具检查热类型大小;在所有权清晰时跨迭代复用缓冲区;map 用 entry API 避免重复查找。
- 迭代器、字符串与字节:为自定义迭代器实现准确的 size_hint;结果只迭代一次时避免 collect;热循环优先遍历切片而非反复索引;复用 String、Vec<u8>、bytes::BytesMut;字节数据用 &[u8];Path/OsStr 保持原生。
- I/O:重复小操作使用 BufReader/BufWriter 并按观测请求大小选容量;批量写入、复用读缓冲;保留部分写、flush 错误、EOF 与输出顺序语义。
- 异步与并发:不在异步执行器线程做长 CPU 工作、阻塞系统调用或同步 sleep,用 spawn_blocking 处理有界阻塞,用 Rayon 或专用池做持续 CPU 并行;guard 不跨 .await 时优先 std::sync::Mutex;生产者可能快于消费者时用有界通道;批处理前审计取消与 select! 丢失分支;注意 Tokio 阻塞线程、Rayon、原生库与应用线程的过度订阅;检查任务所有权、队列深度与关闭。
- 构建与底层调优:分别基准测试 lto、codegen-units、opt-level、panic 策略、分配器、PGO 与链接器改动;target-cpu=native 仅适用于固定部署硬件;加 SIMD 或 unsafe 前先确认热指令序列与编译器是否已消除边界检查或向量化,unsafe 优化需精确不变量、测试与相对安全版本的实测收益。
- 回归防护:仅对关键不变量使用聚焦的 Criterion 基准、分配守卫或编译期大小断言;共享 CI 上的墙钟时间保持建议性;编译器代码生成影响对比时固定 Rust 工具链。
使用方式与限制:正确性与安全性优先于性能;rust-specialist 在正确性、安全与 API 设计上优先;从 code-review 调用时不要再次调用;code-simplifier 在收益被证明后运行;进程与生命周期停滞由 runtime-process-debugging 负责。资料未提供具体安装命令、收费与平台信息。