返回资讯中心
外部精选
软件工程
#开发者实时流

profiler-md 发布:将性能分析数据转换为 Markdown,方便 AI 代理读取

来源标题:Show HN: profiler-md converts performance profiles to Markdown

开发者发布 profiler-md,一个将性能分析数据转为 Markdown 的 CLI 和 JS 库,支持 17 种格式、29 种 profiler、22 种语言和 4 种分析类型。作者最初为让 AI 代理读懂火焰图而写,使用后代理优化性能的效果明显提升。

Hacker News 最新tomeraberbach2026/11/15 · 今天7 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

大家好!profiler-md 是一个 CLI 和 JS 库,可以把性能分析数据转换成 Markdown,支持 17 种格式(比如 pprof)、29 个 profiler(比如 py-spy)、22 种语言(比如 Rust)和 4 种 profile 类型(调用栈 profile、调用图、堆快照和 trace)。今年早些时候,我试着用 AI agent 做性能优化,但效果不太好,因为它们经常:- 只读代码就猜测某个东西为什么慢- 动手改动之后比较改动前后的 wall time,却很难把真正的提升和噪声区分开- 用一次性脚本分析原始 profile,而这些脚本往往有不易察觉的错误问题在于,agent 没法像我一样读懂火焰图。在火焰图里,我能看到哪里慢;改动之后,我也能看出目标工作是否被消除了。agent 需要这样一个反馈闭环。于是我写了一个小工具,把 Node CPU profile 转成 Markdown。agent 用上它之后效果好多了,而且我发现我自己也很喜欢读这份 Markdown!我觉得这件事有潜力,加上我在工作中会用到很多不同的编程语言,所以决定做 profiler-md。我还写了一个 agent skill [1],已经成功用它优化了 profiler-md 本身以及它的 pprof 格式依赖(在一个大型 pprof 文件上实现了 78 倍加速 [2],整体上实现了 3.3 倍加速 [3])。这个项目让我解决了一些有趣的问题:- 让新增一种格式、一个 profiler 或一种 profile 类型变得很简单,只需实现一个接口并注册到 registry。我还为此准备了项目级的 skill!- 通过设定合适的接口边界,解决不同 profiler 语义不一致的问题(比如行号到底代表什么 [4] [5] [6] [7])。- 为 Markdown diff 输出跨 profile 匹配函数。profile 里并不包含完整代码,所以需要一些启发式方法。我通过在真实版本升级产生的 diff 上测量召回率(99.9%)和精确率(99.7%)来评估这个算法。- 设计一个调用树渲染器,尽可能优化一些指标,比如它能展示多少最热的函数、能覆盖 profile 自身 self value 的多少 [8]。很想听听大家的想法。试一试,有任何反馈或问题都欢迎告诉我!利益披露:我在 Anthropic 工作,但这个个人项目与我的雇主无关。[1] https://github.com/TomerAberbach/profiler-md/#skill[2] https://github.com/DataDog/pprof-format/pull/77[3] https://github.com/DataDog/pprof-format/pull/107[4] https://github.com/rbspy/rbspy/issues/409[5] https://github.com/oven-sh/bun/issues/29240[6] https://github.com/google/pprof-nodejs/issues/361[7] https://github.com/NixOS/nix/blob/16fa212a96192479593620e9b9...[8] https://github.com/TomerAberbach/profiler-md/blob/a1ee95e4b5...评论 URL: https://news.ycombinator.com/item?id=50507976点数:1# 评论数:0

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →