更新日志 — v3.0.1¶
发布日期: 2026-01-27
详细更新内容请参见 CHANGELOG.md
[3.0.1] - 2026-01-27¶
性能优化¶
网络性能大幅提升¶
- 优化线程池配置
- 将
FetchWorker线程池从 8 线程优化至 3 线程。 - 测试结果表明:3线程配置在"单个导出不超过3秒"的要求下表现最优。
- 性能提升:
- 总耗时从 263.72秒(v3.0.0)降至 14.43秒(改进94.5%)
- 吞吐量从 0.08组件/秒提升至 1.45组件/秒(改进1712%)
- 平均抓取时间从 65.8秒降至 1.76秒(改进97.3%)
- 超过3秒的组件从 21个降至 3个(改进85.7%)
-
代码位置:
src/services/ExportService_Pipeline.cpp:36 -
降低超时时间
- 组件信息超时:30秒 → 15秒
- 3D模型超时:60秒 → 30秒
- 超时请求不再重试,避免浪费时间
-
代码位置:
src/workers/FetchWorker.cpp -
实现速率限制检测机制
- 检测 HTTP 429 响应并触发指数退避
- 退避策略:每次增加1000ms,最大5000ms
- 动态延迟新请求以避免触发服务器限流
-
代码位置:
src/workers/FetchWorker.h,src/workers/FetchWorker.cpp -
启用网络诊断功能
- 记录每个网络请求的诊断信息(URL、状态码、错误信息、重试次数、延迟、是否限流)
- 在统计报告中汇总网络诊断数据(总请求数、重试次数、平均延迟、速率限制命中次数、状态码分布)
- 帮助快速定位性能瓶颈和网络问题
- 代码位置:
src/models/ComponentExportStatus.h,src/workers/FetchWorker.cpp,src/services/ExportService_Pipeline.cpp
导出流水线效率提升¶
- WriteWorker 优化 (磁盘 I/O)
- 移除了
WriteWorker内部的局部QThreadPool。 - 改为串行写入符号、封装和 3D 模型文件。
- 消除了为每个组件创建和销毁线程池的高昂开销,避免了"过度并行"导致的性能下降。
-
代码位置:
src/workers/WriteWorker.cpp -
FetchWorker 优化 (网络 I/O)
- 实现了
QNetworkAccessManager的thread_local缓存机制。 - 确保线程池中的每个线程只创建一个
QNetworkAccessManager实例并复用它。 - 避免了为每个组件重复初始化网络栈的高昂成本(包括代理解析、DNS 缓存初始化等)。
- 代码位置:
src/workers/FetchWorker.cpp
构建系统修复¶
- 解决循环依赖
- 修复了
EasyKiConverterWorkers和EasyKiConverterServices之间的循环链接依赖。 - 移除了
src/workers/CMakeLists.txt中不必要的EasyKiConverterServices链接。
新增¶
- 网络诊断报告
- 导出统计报告新增
networkDiagnostics字段 - 包含详细的网络性能指标和诊断信息
- 代码位置:
src/services/ExportService_Pipeline.cpp
测试结果¶
- 线程数对比测试
- 3线程:14.43秒,3个组件超过3秒,推荐用于生产环境
- 5线程:12.17秒,5个组件超过3秒,总耗时最短
- 7线程:14.96秒,10个组件超过3秒,性能下降
-
16线程:263.72秒,21个组件超过3秒,严重限流
-
优化前后对比 | 指标 | 优化前(16线程) | 优化后(3线程) | 改进幅度 | |------|----------------|----------------|----------| | 总耗时 | 263.72秒 | 14.43秒 | [减少] 94.5% | | 吞吐量 | 0.08组件/秒 | 1.45组件/秒 | [增加] 1712% | | 平均抓取时间 | 65.8秒 | 1.76秒 | [减少] 97.3% | | 超过3秒组件 | 21个 | 3个 | [减少] 85.7% | | 超时请求 | 未知 | 0个 | [成功] 完全消除 |