性能分析工具,分析代码执行、识别瓶颈、提供优化建议。
Version: 1.1
Features: 性能分析、瓶颈识别、优化建议、基准测试、C/C++ 支持 (NEW)
bash
# 分析函数执行时间
python3 scripts/main.py profile --file src/main.py --function process_data
# 分析整个模块
python3 scripts/main.py profile --file src/main.py
bash
# 扫描代码中的性能问题
python3 scripts/main.py analyze --file src/main.py
# 分析目录
python3 scripts/main.py analyze --dir src/
bash
# 运行基准测试
python3 scripts/main.py benchmark --file src/main.py --function heavy_computation
命令说明示例profile性能分析profile --file src.py``analyze瓶颈分析analyze --file src.py``benchmark基准测试benchmark --function foo
bash
$ python3 scripts/main.py profile --file src/processor.py --function process_data
🔍 Performance Profile
======================
Function: process_data
File: src/processor.py:45
Calls: 100
Total time: 2.34s
Avg time: 23.4ms
Top hotspots:
45% - database.query() (line 67)
30% - json.dumps() (line 89)
15% - data transformation (line 78)
10% - other
Recommendations:
⚠️ Consider caching database results
⚠️ Use orjson instead of json for better performance
bash
$ python3 scripts/main.py analyze --file src/api.py
🔍 Performance Analysis
=======================
File: src/api.py
Issues found: 3
🔴 High Impact:
Line 34: Nested loop O(n²)
for user in users:
for order in orders: # ← N+1 query pattern
Suggestion: Use JOIN query instead
🟡 Medium Impact:
Line 67: String concatenation in loop
result += item # ← Use list + join instead
🟢 Low Impact:
Line 89: Unused import
import heavy_module # ← Remove if not used
bash
$ python3 scripts/main.py benchmark --file src/sort.py --function quicksort
⏱️ Benchmark Results
====================
Function: quicksort
Iterations: 1000
Time (ms):
Mean: 12.34
Median: 11.89
Min: 8.45
Max: 45.67
P95: 18.90
P99: 32.10
Memory (MB):
Mean: 2.45
Peak: 4.12
Comparison:
vs bubble sort: 45x faster
vs merge sort: 1.2x faster
问题检测建议N+1 查询✅使用 JOIN / select_related循环内字符串拼接✅使用 list + join未使用的导入✅移除导入嵌套循环✅优化算法或使用哈希重复计算✅缓存结果
问题检测建议list vs generator✅大数据用 generatordict.get() vs []✅使用 .get() 避免 KeyError列表推导式✅替代 map/filter
.performance.json:
json
{
"benchmark_iterations": 1000,
"warmup_iterations": 10,
"profile_lines": true,
"check_patterns": [
"n_plus_one",
"string_concat_in_loop",
"unused_imports"
]
}
yaml
# .github/workflows/performance.yml
name: Performance Check
on: [pull_request]
jobs:
perf:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Analyze Performance
run: python3 skills/performance/scripts/main.py analyze --dir src/
- name: Run Benchmarks
run: python3 skills/performance/scripts/main.py benchmark --all
text
skills/performance/
├── SKILL.md # 本文件
└── scripts/
├── main.py # ⭐ 统一入口
├── profiler.py # 性能分析器
└── analyzer.py # 瓶颈分析器