SuperAPI AI 工具集

m10-performance

编程与开发

查看项目

更新于 10-15 10:31

技能介绍

m10-performance 是 Rust 技能集合 actionbook/rust-skills 中的一个性能优化技能模块,定位为该技能体系的第 2 层“设计选择”。其核心问题是:瓶颈在哪里,以及优化是否值得。

用途 该技能用于指导 Rust 项目中的性能优化工作。它强调在优化之前先进行测量,而不是凭猜测行事,并帮助使用者判断可接受的性能目标以及优化是否会引入额外复杂度。

主要能力 技能内容围绕性能决策到实现的映射展开,包括:减少分配(预分配、复用,如 with_capacity、对象池)、改善缓存(连续数据,如 Vec、SmallVec)、并行化(数据并行,如 rayon、线程)、避免拷贝(零拷贝,如引用、Cow<T>)、减少间接寻址(内联数据,如 smallvec、数组)。

技能还给出优化优先级排序:1. 算法选择(10x-1000x);2. 数据结构(2x-10x);3. 减少分配(2x-5x);4. 缓存优化(1.5x-3x);5. SIMD/并行(2x-8x)。

使用方式 技能建议的流程是:先测量(使用 flamegraph、perf 进行性能分析;使用 criterion、cargo bench 进行基准测试),识别真正的热点,再根据优先级选择优化手段。技能提供了快速参考工具表:cargo bench 用于微基准测试,criterion 用于统计基准测试,perf / flamegraph 用于 CPU 性能分析,heaptrack 用于分配跟踪,valgrind / cachegrind 用于缓存分析。

技能还列出常见技术及其适用时机与做法:预分配(已知大小时使用 Vec::with_capacity(n))、避免克隆(热路径使用引用或 Cow<T>)、批量操作(大量小操作时先收集再处理)、SmallVec(通常较小时使用 smallvec::SmallVec<[T; N]>)、内联缓冲(固定大小数据使用数组而非 Vec)。

适用场景 适用于 Rust 项目中需要性能优化的场景,包括减少内存分配、提升缓存效率、并行化处理、避免不必要的拷贝、降低间接寻址开销等。技能通过“向上追溯”关联领域约束(如延迟要求、吞吐量需求、内存预算,对应 domain-*),通过“向下追溯”关联具体实现(如 m01-ownership 用于减少克隆、m02-resource 用于预分配、m07-concurrency 用于并行化选择)。

限制与注意事项 技能明确指出常见错误:未做性能分析就优化(目标错误)、在 debug 模式下做基准测试(无意义,应始终使用 --release)、使用 LinkedList(对缓存不友好,应使用 Vec 或 VecDeque)、隐藏的 .clone()(不必要的分配,应使用引用)、过早优化(浪费精力,应先让它工作)。同时列出反模式:为避免生命周期而克隆(性能代价,应使用正确的所有权)、把所有东西都 Box(间接寻址代价,应尽可能使用栈)、小集合使用 HashMap(开销大,应使用 Vec 加线性搜索)、循环中拼接字符串(O(n^2),应使用 String::with_capacity 或 format!)。

关于该技能的具体安装命令、收费方式、平台支持等事实,资料中暂未提供。