3.9 KiB
3.9 KiB
ThreatSource项目性能基准测试报告
测试日期: 2025年6月4日
测试版本: 当前开发版本
测试环境: macOS (Apple Silicon)
📊 测试概述
本次测试旨在建立ThreatSource仿真库的性能基准,识别关键性能瓶颈,为后续优化工作提供数据支撑。
测试配置
- 测试规模: 50个目标实体 + 20个导弹实体
- 测试时长: 30秒
- 目标帧率: 50 FPS (时间步长0.02s)
- 测试模式: 实时仿真模式
🎯 关键性能指标
帧率性能
| 指标 | 数值 | 目标值 | 达成率 |
|---|---|---|---|
| 平均FPS | 41.7 | 50.0 | 83.4% |
| 平均帧时间 | 9.32ms | 20ms | ✅ 优秀 |
| 最小帧时间 | 0.20ms | - | - |
| 最大帧时间 | 178.34ms | <50ms | ❌ 严重超标 |
| 95%分位数 | 40.21ms | <20ms | ❌ 需优化 |
| 99%分位数 | 57.25ms | <30ms | ❌ 需优化 |
内存使用情况
| 指标 | 数值 | 评估 |
|---|---|---|
| 起始内存 | 2.85MB | 基线良好 |
| 结束内存 | 11.97MB | 增长适中 |
| 峰值内存 | 14.25MB | 可接受 |
| 内存增长 | 9.13MB | 增长率0.30MB/s |
垃圾回收分析 ⚠️
| GC代数 | 总次数 | 频率(次/秒) | 阈值 | 状态 |
|---|---|---|---|---|
| Gen0 | 561 | 18.7 | <5.0 | ❌ 严重超标 |
| Gen1 | 478 | 15.9 | <2.0 | ❌ 严重超标 |
| Gen2 | 477 | 15.9 | <0.5 | ❌ 严重超标 |
| 总计 | 1516 | 50.5 | <8.0 | ❌ 内存分配风暴 |
📈 性能时序分析
测试过程中观察到明显的性能波动模式:
第1-15秒: 帧时间波动剧烈 (5-43ms)
- 存在显著GC暂停
- 帧时间不稳定
第16-30秒: 性能相对稳定 (0.8-1.1ms)
- 可能进入稳态运行
- 但内存使用仍在波动
🔍 问题根因分析
1. 内存分配风暴
- 症状: Gen0 GC频率18.7次/秒,远超正常范围
- 影响: 导致频繁的GC暂停,帧时间大幅波动
- 可能原因:
- SimulationManager中大量临时对象创建
- LINQ操作产生中间集合
- 红外图像处理过程中的数组分配
2. GC暂停导致的帧时间跳跃
- 症状: 帧时间从0.2ms跳跃到178ms
- 影响: 严重影响实时仿真的流畅性
- 根因: 频繁的Gen1/Gen2 GC触发
3. 内存使用模式不优
- 症状: 内存使用呈锯齿状波动
- 影响: 触发更多GC周期
- 根因: 缺乏对象重用机制
🎯 优化建议
短期目标 (1-2周)
- 实现对象池模式: 针对高频创建的临时对象
- 优化LINQ使用: 使用预分配集合替代LINQ查询
- 减少装箱操作: 优化数值类型处理
中期目标 (1个月)
- 重构SimulationManager: 采用更高效的实体管理方式
- 优化红外图像处理: 使用Span和内存池
- 实现增量更新: 避免全量数据处理
长期目标 (3个月)
- 架构级优化: 考虑ECS(Entity Component System)模式
- 并行计算: 利用多核处理能力
- 内存布局优化: 提高缓存命中率
📋 验收标准
优化完成后,性能应达到以下标准:
| 指标 | 当前值 | 目标值 | 改善幅度 |
|---|---|---|---|
| Gen0 GC频率 | 18.7次/秒 | <5次/秒 | 73%↓ |
| 95%分位帧时间 | 40.21ms | <20ms | 50%↓ |
| 最大帧时间 | 178ms | <50ms | 72%↓ |
| 平均FPS | 41.7 | >45 | 8%↑ |
📝 测试重现步骤
# 运行性能基准测试
dotnet test --filter "RunPerformanceTest" --verbosity normal
# 运行快速验证测试
dotnet test --filter "QuickPerformanceTest" --verbosity normal
📄 附录
详细帧时间数据
- 测试期间共执行1250次更新循环
- 帧时间分布呈现双峰模式
- 存在明显的GC暂停间隔
内存分配热点
- SimulationManager.Update()方法
- 红外图像处理流水线
- 导弹制导系统计算
报告生成: 自动化性能测试工具
下次测试计划: 性能优化实施后的对比测试