Skip to content

性能优化

[🕒 预计 20 分钟] | 难度:进阶

1. 界面卡顿优化

1.1 大批量列表更新

向列表控件批量插入大量条目时,不要在事件或线程循环中逐条刷新界面——每秒数千次 UI 更新会让界面彻底卡死。正确做法:

  • 线程_提交进度(&工作处理器, &进度处理器, &完成处理器, 参数) 提交任务。进度通知由运行时合并后再派发,界面更新只发生在进度与完成处理器里。
  • 工作处理器里只算不画:用 线程_报告进度(百分比, 说明) 汇报进度,禁止直接操作 Win32 控件。
  • 列表确实需要大量条目时,先在完成处理器里一次性写入;批量插入前应关闭控件重绘,写完再恢复。

WARNING

多线程模块 1.x 的 线程_批量启动线程_启动延时设置文本线程_启动延时添加行线程_启动延时添加项目线程_休眠线程_等待全部线程_活动数量线程_硬件并发数 在 2.0 中已列为旧版命令,不再贡献命令实现,调用会被诊断阻断。旧项目请改用 线程_提交进度 + 线程_协作等待 + 线程_等待

lcpp
// 大规模任务:一次提交,进度合并,界面只在处理器里更新
线程任务 任务 = 线程_提交进度(&导入数据, &导入进度, &导入完成, 文件列表)

1.2 不要阻塞界面线程

  • 在界面事件中调用 线程_等待线程池_等待空闲 等同步等待命令会直接卡住界面;确需等待时必须给有限超时,并优先把后续逻辑放进完成处理器。
  • 后台任务里的短暂让出用 线程_协作等待(毫秒),它同时是协作取消的响应点;配合 线程_请求取消(任务)线程_是否请求取消(0) 实现可中断的长任务。
  • 网络请求使用 HTTP客户端_GET异步 等异步入口,完成后再通过处理器回调更新界面。
  • 完成的任务用 线程_释放任务 单独回收,或用 线程_清理已完成 批量清理,避免任务对象堆积。

2. 内存与资源

  • JSON 值等由模块创建的对象,用完后调用对应释放命令(如 JSON_释放)。
  • 图片资源尽量压缩尺寸后再加载。
  • 列表数据频繁增长时注意清理过期条目。

3. 构建产物

手段说明
按需 SDK模块的 C++ 依赖按需物化到构建目录,未启用模块不参与编译
发布运行库交付前确认目标机器已安装 Visual C++ Redistributable
精简发布参考 打包发布 的离线精简发布流程

4. 定位性能问题

  • 调试输出 在关键路径输出时间点,结合底部 输出面板 观察耗时分布。
  • 界面卡顿时优先检查:是否在事件中同步执行了耗时操作、是否高频逐条刷新列表控件。

下一步