bp-performance-optimization

star 146

提供性能优化方法论、设计原则和具体优化规则。在编写代码、优化性能瓶颈、进行 code review 时使用,涵盖 CPU、内存、I/O、并发等维度。

davidYichengWei By davidYichengWei schedule Updated 2/26/2026

name: bp-performance-optimization description: 提供性能优化方法论、设计原则和具体优化规则。在编写代码、优化性能瓶颈、进行 code review 时使用,涵盖 CPU、内存、I/O、并发等维度。

性能优化技术

前置检查

本 skill 是参考资料,不是工作流入口。

在应用本 skill 的优化规则前,必须确认:

  1. 优化目标是否明确?

    • 具体要优化什么?延迟?吞吐?内存?
    • 当前数据是多少?目标是多少?
    • 如何测量和验证?
  2. 是否已经定位瓶颈?

    • 有 profiling 数据吗?
    • 热点在哪里?

如果以上问题不清楚

  • 涉及代码修改 → 先走 workflow-code-generation Skill(它会引导需求澄清)
  • 仅做分析 → 先与用户确认优化目标和当前数据

核心理念

优化的本质是简化。 复杂的代码通常更大、更慢、更耗能。

方法论

阶段 要点
1. 定义目标 明确成功标准:延迟?吞吐?内存?功耗?
2. 设计评估 糟糕的设计无法靠优化弥补
3. Profile 关注消耗指标(指令数、cache miss),不只是时间
4. 算法优先 先优化数据结构和算法
5. 应用规则 对热点应用具体优化规则

设计原则

原则 说明
简单直接 避免过度抽象;能删代码比加代码好
连续优于分散 vector/数组优于链表(cache 友好)
直接优于间接 减少指针追逐,每次间接访问都是潜在 cache miss
独占优于共享 unique_ptr 无开销;shared_ptr 有原子操作开销
扁平优于深层 避免复杂继承层次和虚函数派发
Early Binding 把工作提前做一次,避免重复做多次
模块化 清晰契约,允许局部替换而不改架构

优化规则速查

Space-for-Time(空间换时间)

规则 说明
Data Structure Augmentation 添加冗余信息加速操作
Precomputation 预计算并存储结果
Caching 缓存频繁访问的数据
Lazy Evaluation 延迟计算直到真正需要

详见 reference/space-for-time.md

Time-for-Space(时间换空间)

规则 说明
Packing 紧凑存储减少内存占用
Overlaying 复用内存空间
Interpreters 用解释器压缩程序表示

详见 reference/time-for-space.md

Loop Rules(循环优化)

规则 说明
Code Motion 将循环不变量移出循环
Combining Tests 合并测试条件,使用哨兵
Loop Unrolling 展开循环减少迭代开销
Loop Fusion 合并相同范围的循环

详见 reference/loop-rules.md

Logic Rules(逻辑优化)

规则 说明
Algebraic Identities 用等价的更廉价表达式替换
Short-Circuiting 提前终止求值
Reordering Tests 廉价/常成功的测试放前面
Precompute Logical Functions 查表替代逻辑计算

详见 reference/logic-rules.md

Procedure Rules(过程优化)

规则 说明
Inlining 内联展开减少调用开销
Exploit Common Cases 快速路径处理常见情况
Tail Recursion Removal 尾递归转循环
Parallelism 利用硬件并行能力

详见 reference/procedure-rules.md

Expression Rules(表达式优化)

规则 说明
Compile-Time Initialization 编译期初始化
Strength Reduction 用廉价操作替代昂贵操作
Common Subexpression Elimination 消除公共子表达式
Word Parallelism 利用字宽并行(位操作)

详见 reference/expression-rules.md

Cache & Memory(缓存和内存)

规则 说明
AoS → SoA 单字段扫描时结构体数组转数组结构体
Loop Tiling 分块处理,使工作集 fit 进 cache
False Sharing 多线程变量对齐到不同 cache line
Arena/Pool 批量分配,避免频繁 malloc

详见 reference/cache-and-memory.md

Modern C++ Tricks

规则 说明
string_view/span 避免拷贝,零开销抽象
Branchless 减少分支预测失败惩罚
CRTP 静态多态替代虚函数
Sharded Lock 分片锁减少竞争

详见 reference/modern-cpp-tricks.md


Code Review 检查清单

设计层面:

  • 数据结构是否连续紧凑?
  • 是否有不必要的抽象层或间接访问?
  • 关键路径是否简单直接?

实现层面:

  • 循环不变量是否已移出?
  • 是否有可预计算的值?
  • 测试条件顺序是否最优?
  • 是否存在重复计算?
Install via CLI
npx skills add https://github.com/davidYichengWei/agentic-engineering-framework --skill bp-performance-optimization
Repository Details
star Stars 146
call_split Forks 43
navigation Branch main
article Path SKILL.md
More from Creator
davidYichengWei
davidYichengWei Explore all skills →