mcpField
E
elixir-performance-review

elixir-performance-review

github.com/existential-birds测试与质量85101 次安装11 周前更新
代码仓库

关于 elixir-performance-review

用于评估 Elixir 代码性能的审查 Skill,提供 GenServer、内存、并发和数据库模式的检查清单与参考。要求审查者在报告问题前以具体证据验证发现。

主要功能

  1. 01GenServer 瓶颈检查
  2. 02内存与二进制处理检查
  3. 03并发与背压检查
  4. 04数据库查询审查清单
  5. 05证据与验证关卡

适用场景

  1. 01检查 Elixir 改动中的阻塞回调
  2. 02审查大数据处理与进程增长
  3. 03报告前验证性能发现

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/existential-birds/beagle --skill elixir-performance-review

安装后在 Claude Code 中输入/elixir-performance-review确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
concurrency.md
ets-patterns.md
genserver-bottlenecks.md
memory.md

详细介绍

Elixir 性能审查

快速参考

问题类型参考资料
邮箱溢出、阻塞调用references/genserver-bottlenecks.md
何时使用 ETS、读写并发references/ets-patterns.md
二进制数据处理、大型消息references/memory.md
Task 模式、流量控制references/concurrency.md

审查清单

GenServer
  • 不会成为所有请求的单进程瓶颈
  • handle_call/cast 中没有阻塞操作
  • 超时配置恰当
  • 对读密集型状态考虑使用 ETS
内存
  • 大型二进制数据不会在进程间复制
  • 对大型数据转换使用流
  • 不会无限制地累积数据
并发
  • 动态任务使用 Task.Supervisor(而非原始的 Task.async)
  • 不会无限制地创建进程
  • 为消息生产者设置了恰当的背压
数据库
  • 预加载数据以避免 N+1 查询
  • 对大型结果集进行分页
  • 为频繁查询创建索引

有效模式(不要标记)

  • 低吞吐量场景使用单个 GenServer - 并非所有状态都需要横向扩展
  • 关键路径使用同步调用 - 一致性可能要求这样做
  • 不使用 ETS 的内存状态 - 对于较小的状态,ETS 会带来开销
  • 小型集合使用 Enum 而非 Stream - Stream 的开销不值得

依上下文判断的规则

问题仅当以下条件成立时才标记
GenServer 瓶颈处理速率 > 1000 req/sec,或回调中存在阻塞 I/O
使用流处理 > 10k 个项目,或读取大型文件
使用 ETS读写比 > 10:1,且存在并发访问

报告前的关卡

按顺序完成以下步骤,进行性能审查。每一步通过前,不要发布发现。

  1. 已加载协议 — 阅读 审查验证协议,并针对每项发现应用其中对热点路径、并发和资源使用的检查。通过标准: 对于每项实质性发现,你都能指出符合的协议小节,或说明 N/A 并给出理由(例如,仅引用此技能的有效模式)。
  2. 证据有明确定位 — 通过标准: 每项发现都包含具体定位信息:path:line(或行范围),或 Module.function/arity 加上文件中的简短引用片段。
  3. 性能声明 — 对于 依上下文判断的规则 中的任何内容,或任何关于瓶颈、N+1、无界增长或高内存/二进制开销的声明,通过标准: 说明满足“仅当以下条件成立时才标记”的观察到或测量到的事实(例如速率、项目数量、比率),或附上佐证材料(性能分析器输出、SQL/日志摘录、grep/搜索范围);否则将其降级为问题 / 疑似问题,并说明哪些内容尚未验证。

提交发现前

先完成上文的报告前的关卡;验证协议是这些关卡的必备输入。

评论

支持 Markdown