性能分析工具

PerfOwl是一个用于分析浏览器性能分析器导出的CLI工具和MCP服务器,帮助用户识别性能瓶颈并理解复杂的跟踪数据。

  • by CedricHerzog
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 CedricHerzog/perfowl

使用说明

PerfOwl

看看其他人在你的绩效档案中错过了什么。

欢迎

PerfOwl是一个功能强大的CLI工具和MCP服务器,用于分析浏览器分析器导出。无论您是调试性能问题、优化web应用程序,还是将性能分析集成到AI工作流程中,PerfOwl都可以帮助您识别瓶颈并理解复杂的跟踪。

什么是PerfOwl?

PerfOwl(优化工作台和实验室)是一个性能分析工具包,提供:

  • 瓶颈检测 -GC压力、布局抖动、同步IPC、长任务、网络阻塞
  • 可拓分析 -每个扩展的性能影响、DOM事件、IPC消息
  • 呼叫树分析 -根据自身时间和运行时间的热功能,热路径检测
  • 类别细分 -每个分析器类别(JavaScript、布局、GC/CC、网络等)花费的时间
  • 线程分析 -CPU时间、样本计数、唤醒模式、类别分布
  • 工人分析 -Web Worker性能、CPU/空闲时间、消息模式、同步点
  • 加密货币分析 -SubtleCrypto API使用、算法检测、序列化问题
  • 竞争检测 -GC暂停影响工作进程、同步IPC阻塞、锁争用
  • 尺度分析 -并行效率、加速测量、瓶颈识别
  • 配置文件比较 -比较两个配置文件以确定改进或回归
  • MCP服务器 -与Claude和其他AI助手集成

目前支持Firefox Profiler导出,更多浏览器即将推出。

目录

先决条件

在使用PerfOwl之前,请确保您已经:

  • 转到>=1.21 -需要从源头进行构建。 在此下载
  • 码头工人 (可选)-用于集装箱使用。 安装指南

[!注意] PerfOwl分析Firefox Profiler导出。要捕获配置文件,请执行以下操作:

  1. 打开Firefox并导航到 profiler.firefox.com
  2. 单击“启用探查器”并重现您的性能问题
  3. 点击“捕获配置文件”并下载 .json.gz 文件

快速开始

# Clone and build
git clone https://github.com/user/perfowl.git
cd perfowl
go build -o perfowl .

# Analyze a profile
./perfowl summary -p profile.json.gz
./perfowl bottlenecks -p profile.json.gz -o markdown

安装

从源代码构建

go build -o perfowl .

码头工人

# Build image
docker build -t perfowl .

# Run CLI commands
docker run --rm -v /path/to/profiles:/profiles:ro perfowl summary -p /profiles/profile.json.gz

# Run MCP server
docker run -i --rm -v /path/to/profiles:/profiles:ro perfowl mcp

CLI使用情况

可用命令

命令 描述
summary 获取配置文件摘要(持续时间、平台、线程、扩展)
bottlenecks 通过严重性过滤检测性能瓶颈
extensions 分析扩展性能影响
markers 提取按类型、类别或持续时间过滤的标记
workers 分析Web Worker性能和同步
crypto 分析加密操作并检测问题
contention 检测线程争用(GC、IPC、锁)
scaling 测量并行缩放效率
mcp 启动MCP服务器

输出格式

PerfOwl支持多种输出格式:

# JSON (default)
./perfowl bottlenecks -p profile.json.gz -o json

# Markdown (great for reports)
./perfowl bottlenecks -p profile.json.gz -o markdown

# Plain text
./perfowl bottlenecks -p profile.json.gz -o text

MCP服务器设置

PerfOwl包括一个MCP(模型上下文协议)服务器,用于与Claude等人工智能助手集成。

添加到克劳德代码:

claude mcp add perfowl -s user -- /path/to/perfowl mcp

验证安装:

claude mcp list

开始使用Claude:

“分析/path/to/profile.json.gz中的Firefox配置文件并找到瓶颈”

可用的MCP工具

工具 说明
get_summary 获取配置文件摘要(持续时间、平台、线程、扩展)
get_bottlenecks 通过严重性过滤检测性能瓶颈
get_markers 提取按类型、类别或持续时间过滤的标记
analyze_extension 分析扩展性能影响
analyze_profile 综合分析(总结+瓶颈+扩展)
get_call_tree 查找热门功能和热门路径
get_category_breakdown 每个分析器类别所花费的时间
get_thread_analysis 使用CPU时间和唤醒模式分析所有线程
compare_profiles 比较两个配置文件以进行改进/回归
analyze_workers 分析Web Worker性能和同步
analyze_crypto 分析加密操作并检测问题
analyze_contention 检测线程争用(GC、IPC、锁)
analyze_scaling 测量并行缩放效率
compare_scaling 比较两个配置文件之间的缩放比例

使用示例

分析个人资料

# Get a quick summary
./perfowl summary -p profile.json.gz

# Find performance bottlenecks
./perfowl bottlenecks -p profile.json.gz -o markdown

# Analyze extension impact
./perfowl extensions -p profile.json.gz

# Extract specific markers
./perfowl markers -p profile.json.gz --type GCMajor --limit 10

# Analyze worker threads
./perfowl workers -p profile.json.gz

# Profile crypto operations
./perfowl crypto -p profile.json.gz

# Detect thread contention
./perfowl contention -p profile.json.gz

# Measure scaling efficiency
./perfowl scaling -p profile.json.gz

比较配置文件

# Compare scaling between baseline and optimized versions
./perfowl scaling -p baseline.json.gz --compare optimized.json.gz

与AI助手合作

在MCP服务器运行的情况下,您可以要求Claude:

  • “分析此配置文件并总结主要瓶颈”
  • “比较这两个配置文件,告诉我有什么改进”
  • “查找导致性能问题的任何扩展”
  • “检查GC压力是否影响主螺纹”

贡献

欢迎投稿!以下是如何开始:

  1. 分叉存储库 -创建您自己的项目副本
  2. 创建要素分支 - git checkout -b feature/your-feature-name
  3. 进行更改 -遵循围棋惯例并跑步 go fmt
  4. 彻底测试 -确保您的更改正确工作
  5. 提交拉取请求 -描述你的变化及其影响

报告问题

发现错误或有功能请求?

  1. 检查现有问题 -先搜索以避免重复
  2. 提供细节 -包括环境信息、复制步骤和预期行为
  3. 共享示例配置文件 -如果可能的话,分享一个再现问题的最小配置文件

许可证

该项目根据 MIT许可证。请参阅 许可证 文件以获取详细信息。