跳转至

更新日志 — 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)

  • 实现了 QNetworkAccessManagerthread_local 缓存机制。
  • 确保线程池中的每个线程只创建一个 QNetworkAccessManager 实例并复用它。
  • 避免了为每个组件重复初始化网络栈的高昂成本(包括代理解析、DNS 缓存初始化等)。
  • 代码位置:src/workers/FetchWorker.cpp

构建系统修复

  • 解决循环依赖
  • 修复了 EasyKiConverterWorkersEasyKiConverterServices 之间的循环链接依赖。
  • 移除了 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个 | [成功] 完全消除 |