10 KiB
性能测试记录
测试命令
dotnet test --configuration Release --filter "RunPerformanceTest" --verbosity minimal --nologo --logger "console;verbosity=normal"
红外成像制导导弹测试记录
初始状态
时间:2025-06-05 10:00:00
=== 详细性能测试结果 ===
【基本统计】 测试时长: 30.0 秒 总更新次数: 1391 平均FPS: 46.4 平均帧时间: 3.87 ms
【帧时间分析】 最小帧时间: 0.00 ms 最大帧时间: 69.80 ms 95%分位数: 23.20 ms 99%分位数: 32.41 ms
【内存使用分析】 起始内存: 2.89 MB 结束内存: 9.71 MB 峰值内存: 11.77 MB 内存增长: 6.82 MB 平均内存增长率: 0.23 MB/s
【垃圾回收分析】 Gen0 GC次数: 1008 (33.6 次/秒) Gen1 GC次数: 952 (31.7 次/秒) Gen2 GC次数: 952 (31.7 次/秒) 总GC次数: 2912
【性能评级】 帧时间表现: 优秀 ✅ 内存管理: 优秀 ✅ GC频率: 较差 ❌
第一次优化
时间:2025-06-05 10:15:00
-
优化内容:将图像分辨率,从 640x480 调整为 256x256
-
优化效果:
- Gen0、Gen1 GC次数减少 50%,Gen2 GC次数减少 80%,帧时间波动减小
- 平均帧时间从 3.87 ms 降低到 1.55 ms,最大帧时间从 69.80 ms 降低到 27.98 ms
-
优化结论:
- 图像分辨率降低,各指标基本降低 50%以上,但仍然不够理想,需要进一步优化
-
是否采用:是
=== 详细性能测试结果 ===
【基本统计】 测试时长: 30.0 秒 总更新次数: 1420 平均FPS: 47.3 平均帧时间: 1.55 ms
【帧时间分析】 最小帧时间: 0.00 ms 最大帧时间: 27.98 ms 95%分位数: 7.37 ms 99%分位数: 9.54 ms
【内存使用分析】 起始内存: 1.76 MB 结束内存: 7.65 MB 峰值内存: 11.91 MB 内存增长: 5.89 MB 平均内存增长率: 0.20 MB/s
【垃圾回收分析】 Gen0 GC次数: 530 (17.7 次/秒) Gen1 GC次数: 528 (17.6 次/秒) Gen2 GC次数: 188 (6.3 次/秒) 总GC次数: 1246
【性能评级】 帧时间表现: 优秀 ✅ 内存管理: 优秀 ✅ GC频率: 较差 ❌
【潜在问题分析】 ⚠️ Gen0 GC频率过高,存在内存分配风暴 ⚠️ 存在显著的帧时间波动,GC暂停可能较严重
第二次优化
时间:2025-06-05 10:30:00
-
优化内容:
- 将 InfraredImageGenerator 的 thermalPattern 数组从 double 改为 float
-
优化效果:
- 几乎没有效果
-
是否采用:否
=== 详细性能测试结果 ===
【基本统计】 测试时长: 30.0 秒 总更新次数: 1419 平均FPS: 47.3 平均帧时间: 1.73 ms
【帧时间分析】 最小帧时间: 0.00 ms 最大帧时间: 23.38 ms 95%分位数: 8.30 ms 99%分位数: 10.22 ms
【内存使用分析】 起始内存: 2.90 MB 结束内存: 7.39 MB 峰值内存: 13.26 MB 内存增长: 4.49 MB 平均内存增长率: 0.15 MB/s
【垃圾回收分析】 Gen0 GC次数: 531 (17.7 次/秒) Gen1 GC次数: 528 (17.6 次/秒) Gen2 GC次数: 198 (6.6 次/秒) 总GC次数: 1257
【性能评级】 帧时间表现: 优秀 ✅ 内存管理: 优秀 ✅ GC频率: 较差 ❌
【潜在问题分析】 ⚠️ Gen0 GC频率过高,存在内存分配风暴 ⚠️ 存在显著的帧时间波动,GC暂停可能较严重
第三次优化
时间:2025-06-05 10:45:00
-
优化内容:
- 将 InfraredImage 的 Intensity 数组从 double 改为 float
-
优化效果:
- GC次数减少 30%,效果一般
-
是否采用:否
=== 详细性能测试结果 ===
【基本统计】 测试时长: 30.0 秒 总更新次数: 1416 平均FPS: 47.2 平均帧时间: 1.64 ms
【帧时间分析】 最小帧时间: 0.00 ms 最大帧时间: 21.59 ms 95%分位数: 8.00 ms 99%分位数: 10.28 ms
【内存使用分析】 起始内存: 1.75 MB 结束内存: 7.86 MB 峰值内存: 9.80 MB 内存增长: 6.11 MB 平均内存增长率: 0.20 MB/s
【垃圾回收分析】 Gen0 GC次数: 370 (12.3 次/秒) Gen1 GC次数: 367 (12.2 次/秒) Gen2 GC次数: 131 (4.4 次/秒) 总GC次数: 868
【性能评级】 帧时间表现: 优秀 ✅ 内存管理: 优秀 ✅ GC频率: 较差 ❌
【潜在问题分析】 ⚠️ Gen0 GC频率过高,存在内存分配风暴 ⚠️ 存在显著的帧时间波动,GC暂停可能较严重
第四次优化
时间:2025-06-05 11:00:00
-
优化内容:
- 将 InfraredImage 的 Intensity 数组从 double 改为 byte
-
优化效果:
- GC次数减少 60%,效果不错,但帧时间有所上升
-
是否采用:否,考虑提高了程序复杂度,提高了帧时间
=== 详细性能测试结果 ===
【基本统计】 测试时长: 30.0 秒 总更新次数: 1420 平均FPS: 47.3 平均帧时间: 1.95 ms
【帧时间分析】 最小帧时间: 0.00 ms 最大帧时间: 27.76 ms 95%分位数: 12.39 ms 99%分位数: 15.20 ms
【内存使用分析】 起始内存: 2.91 MB 结束内存: 8.61 MB 峰值内存: 8.99 MB 内存增长: 5.71 MB 平均内存增长率: 0.19 MB/s
【垃圾回收分析】 Gen0 GC次数: 206 (6.9 次/秒) Gen1 GC次数: 203 (6.8 次/秒) Gen2 GC次数: 70 (2.3 次/秒) 总GC次数: 479
【性能评级】 帧时间表现: 优秀 ✅ 内存管理: 优秀 ✅ GC频率: 较差 ❌
【潜在问题分析】 ⚠️ Gen0 GC频率过高,存在内存分配风暴 ⚠️ 存在显著的帧时间波动,GC暂停可能较严重
=== 详细性能测试结果 ===
【基本统计】 测试时长: 30.0 秒 总更新次数: 1417 平均FPS: 47.2 平均帧时间: 1.30 ms
【帧时间分析】 最小帧时间: 0.00 ms 最大帧时间: 33.33 ms 95%分位数: 8.30 ms 99%分位数: 11.22 ms
【内存使用分析】 起始内存: 2.94 MB 结束内存: 7.96 MB 峰值内存: 12.55 MB 内存增长: 5.03 MB 平均内存增长率: 0.17 MB/s
【垃圾回收分析】 Gen0 GC次数: 87 (2.9 次/秒) Gen1 GC次数: 81 (2.7 次/秒) Gen2 GC次数: 31 (1.0 次/秒) 总GC次数: 199
【性能评级】 帧时间表现: 优秀 ✅ 内存管理: 优秀 ✅ GC频率: 一般 ⚠️
【潜在问题分析】 ⚠️ Gen0 GC频率过高,存在内存分配风暴 ⚠️ 存在显著的帧时间波动,GC暂停可能较严重
第五次优化
时间:2025-06-05 11:15:00
-
优化内容:
- 将Intensity从对数运算改为查找表
-
优化效果:
- 没有什么变化
-
是否采用:否,考虑提高了程序复杂度,提高了帧时间
=== 详细性能测试结果 ===
【基本统计】 测试时长: 30.0 秒 总更新次数: 1415 平均FPS: 47.2 平均帧时间: 2.22 ms
【帧时间分析】 最小帧时间: 0.00 ms 最大帧时间: 29.44 ms 95%分位数: 8.91 ms 99%分位数: 11.60 ms
【内存使用分析】 起始内存: 3.04 MB 结束内存: 7.81 MB 峰值内存: 11.20 MB 内存增长: 4.78 MB 平均内存增长率: 0.16 MB/s
【垃圾回收分析】 Gen0 GC次数: 249 (8.3 次/秒) Gen1 GC次数: 246 (8.2 次/秒) Gen2 GC次数: 86 (2.9 次/秒) 总GC次数: 581
【性能评级】 帧时间表现: 优秀 ✅ 内存管理: 优秀 ✅ GC频率: 较差 ❌
【潜在问题分析】 ⚠️ Gen0 GC频率过高,存在内存分配风暴 ⚠️ 存在显著的帧时间波动,GC暂停可能较严重
第六次优化
时间:2025-06-05 11:30:00
-
优化内容:
- 修改引导系统的,动态调整视场角,不每次都重新创建图像生成器
-
优化效果:
- 大幅度减少GC次数,帧时间变化不大
-
是否采用:是
=== 详细性能测试结果 === 【基本统计】 测试时长: 30.0 秒 总更新次数: 1413 平均FPS: 47.1 平均帧时间: 1.92 ms
【帧时间分析】 最小帧时间: 0.00 ms 最大帧时间: 29.89 ms 95%分位数: 8.24 ms 99%分位数: 11.09 ms
【内存使用分析】 起始内存: 3.06 MB 结束内存: 12.05 MB 峰值内存: 12.44 MB 内存增长: 8.99 MB 平均内存增长率: 0.30 MB/s
【垃圾回收分析】 Gen0 GC次数: 25 (0.8 次/秒) Gen1 GC次数: 3 (0.1 次/秒) Gen2 GC次数: 2 (0.1 次/秒) 总GC次数: 30
【性能评级】 帧时间表现: 优秀 ✅ 内存管理: 优秀 ✅ GC频率: 优秀 ✅
【潜在问题分析】 ⚠️ 存在显著的帧时间波动,GC暂停可能较严重
第七次优化
时间:2025-06-05 11:45:00
-
优化内容:
- 将图像分辨率从 256x256 调整为 128x128
-
优化效果:
- GC次数变化不大,平均帧时间减少 1/3,最大帧时间减少 2/3,95%分位数减少 1/3
-
是否采用:否,考虑到可能对图像质量有影响,暂时不采用
=== 详细性能测试结果 === 【基本统计】 测试时长: 30.0 秒 总更新次数: 1417 平均FPS: 47.2 平均帧时间: 1.51 ms 【帧时间分析】 最小帧时间: 0.00 ms 最大帧时间: 10.72 ms 95%分位数: 6.58 ms 99%分位数: 7.76 ms 【内存使用分析】 起始内存: 3.08 MB 结束内存: 7.12 MB 峰值内存: 11.61 MB 内存增长: 4.04 MB 平均内存增长率: 0.13 MB/s 【垃圾回收分析】 Gen0 GC次数: 16 (0.5 次/秒) Gen1 GC次数: 1 (0.0 次/秒) Gen2 GC次数: 0 (0.0 次/秒) 总GC次数: 17 【性能评级】 帧时间表现: 优秀 ✅ 内存管理: 优秀 ✅ GC频率: 优秀 ✅ 【潜在问题分析】
第八次优化
时间:2025-06-05 12:00:00
-
优化内容:
- 将 InfraredImage 的 Intensity 数组从 byte 改回 double,去掉对数计算和查找表
-
优化效果:
- 帧时间减小,GC次数增加,但影响不大
-
是否采用:是
=== 详细性能测试结果 === 【基本统计】 测试时长: 30.0 秒 总更新次数: 1416 平均FPS: 47.2 平均帧时间: 1.10 ms 【帧时间分析】 最小帧时间: 0.00 ms 最大帧时间: 19.10 ms 95%分位数: 5.03 ms 99%分位数: 7.89 ms 【内存使用分析】 起始内存: 2.93 MB 结束内存: 8.54 MB 峰值内存: 9.52 MB 内存增长: 5.61 MB 平均内存增长率: 0.19 MB/s 【垃圾回收分析】 Gen0 GC次数: 93 (3.1 次/秒) Gen1 GC次数: 79 (2.6 次/秒) Gen2 GC次数: 69 (2.3 次/秒) 总GC次数: 241 【性能评级】 帧时间表现: 优秀 ✅ 内存管理: 优秀 ✅ GC频率: 一般 ⚠️ 【潜在问题分析】 ⚠️ Gen0 GC频率过高,存在内存分配风暴