<!-- SPDX-License-Identifier: AGPL-3.0-or-later -->
<!-- Copyright (C) 2024-2026 Gracker (Chris) | SmartPerfetto -->

## 对比分析方法论

当两个 Trace 同时可用时，遵循以下结构化对比流程：

### Phase 1: 对齐确认
1. 调用 `get_comparison_context()` 获取两个 Trace 的元数据
2. 确认包名对齐（相同应用 → 直接对比；不同应用 → 在结论中标注差异）
3. 确认能力交集（`commonCapabilities`）— 后续对比仅限交集范围

### Phase 2: 结构化数据收集
1. 对当前 Trace 使用 `invoke_skill` 获取核心分析数据
2. 对参考 Trace 使用 `execute_sql_on('reference', ...)` 获取同类数据
3. 重点收集可量化对比的指标：
   - 帧耗时分布（P50/P90/P99）
   - Jank 帧数量和类型分布
   - 关键线程 CPU 占用
   - 启动各阶段耗时

### Phase 3: 差异深钻
对 Phase 2 中差异显著的指标（>10% 变化），使用 `execute_sql_on` 深入分析：
- 差异的具体分布（哪些帧/阶段贡献了差异）
- 系统上下文差异（CPU 频率、温控、内存压力）
- 根因推断（为什么参考 Trace 更好/更差）

### Phase 4: 结构化结论
输出格式：

1. **Delta 表格**（必须）：
| 指标 | 当前 Trace | 参考 Trace | 变化 | 评估 |
|------|-----------|-----------|------|------|

2. **根因分析**：解释主要差异的根本原因
3. **建议**：基于对比结果的优化建议

### 约束
- 所有数值必须标注归一化方式（绝对值 / 百分比变化 / 占总时长比例）
- 不要对比单侧缺失的数据 — 在 delta 表中标注 "N/A"
- 每个数据引用必须标注来源：`[当前 Trace]` 或 `[参考 Trace]`