开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 478|回复: 10
收起左侧

[易语言] 启动线程中CPU和内存占用高

[复制链接]

结帖率:96% (43/45)
发表于 2026-7-25 20:53:43 | 显示全部楼层 |阅读模式   福建省宁德市
20精币
写的一段代码只要是超级列表框取标题,再用数据一直重复POSTcha询,再以返回的数据判断结果置标题去,数据少的时候还好,数据一多就卡顿,而且cpu和内存占用高。


程序本身用的启动线程命令,中间的间隔也用的延时命令,应该怎么优化呢


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值
结帖率:93% (94/101)

签到天数: 2 天

发表于 2026-7-25 21:02:38 | 显示全部楼层   浙江省温州市
  
子程序名返回值类型公开备 注
超级列表框_快速导入数据 
参数名类 型参考可空数组备 注
超级列表框超级列表框
文件路径文本型路径优先
总文本文本型路径为空时导入文本
列隔符文本型默认#表格空格符
保留原有数据逻辑型默认不保留  如果保留 必须是没经过删除的数据 超列的删除是标记删除
变量名类 型静态数组备 注
字节集快速字节集对象 
文本快速文本对象 
行组文本型0
i整数型 
原表项数整数型 
列组文本型0
n整数型 
超级列表框.禁止重画 ()
超级列表框.可视 =   ' 可视的话会耽误更多时间
如果真 (是否为空 (列隔符))
列隔符 = #表格空格符

判断 (文件路径 ≠ “”)  ' 路径优先
文本.从文件读 (文件路径)
文本.置文本 (总文本)

行组 = 文本.分割文本 ( #换行符, )
文本.清除文本 ()
如果真 (保留原有数据 = )
字节集.添加 (超级列表框.表项)

计次循环首 (取数组成员数 (行组), i)
列组 = 分割文本 (行组 [i], 列隔符, )
计次循环首 (取数组成员数 (列组), n)
判断 (n = 1)
' 字节集 = { 0 } + 到字节集 (图片索引) + 到字节集 (状态图片) + 到字节集 (缩进数目) + 到字节集 (项目数值) + 到字节集 (表项标题){ 0, 0 }  ' 图片索引默认为-1 ' 状态图片默认为-1
字节集.添加 ({ 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0 }, 到字节集 (列组 [n]), { 0, 0 })
字节集.添加 ({ 1, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0 }, 到字节集 (列组 [n]), { 0, 0 })

计次循环尾 ()
计次循环尾 ()
超级列表框.表项 = 字节集.取字节集 (, )
超级列表框.允许重画 ()
字节集.清除字节集 ()
超级列表框.可视 = 真


i支持库列表   支持库注释   
commobj通用对象支持库
iext扩展界面支持库一
最快的方法是用虚表
回复

使用道具 举报

结帖率:100% (32/32)

签到天数: 11 天

发表于 2026-7-25 21:23:54 | 显示全部楼层   河南省安阳市
用虚表模块显示超级列表框就好了
回复

使用道具 举报

结帖率:96% (43/45)

签到天数: 5 天

 楼主| 发表于 2026-7-26 07:54:36 | 显示全部楼层   福建省宁德市
samll88 发表于 2026-7-25 21:02
[e=0].版本 2
.支持库 commobj
.支持库 iext

导入数据并不卡,数据顶多也就几十条而已。
回复

使用道具 举报

结帖率:96% (43/45)

签到天数: 5 天

 楼主| 发表于 2026-7-26 07:55:22 | 显示全部楼层   福建省宁德市
wtflxk 发表于 2026-7-25 21:23
用虚表模块显示超级列表框就好了

导入数据并不卡,数据顶多也就几十条而已。多的是对于网页返回的判断和如果真命令,以及对超级列表框的取标题和置标题
回复

使用道具 举报

签到天数: 10 天

发表于 2026-7-26 08:27:48 | 显示全部楼层   山东省滨州市
注意这么几个雷区,按你的描述,你大概率在线程里做请求,然后请求结果写组件。
这么搞会有几个问题
线程里直接操作超级列表框组件,UI组件跨线程访问在大量操作下会锁界面,CPU暴涨。
你还在线程里用了延时,UI消息循环堵塞,多线程大量并发占用资源
post请求有没有节流处理,你启动线程了,有没有做多线程的处理
频繁的置标题,每次都触发整个组件的重绘
线程是很宝贵的资源,不要随意创建线程


你理解了这些,解决方案也就有了,
主线程负责UI界面,当作UI线程用,只负责组件的读写更新,放一个时钟,30ms读一次业务数据去批量更新
工作线程负责只请求post,请求结果看你需求放在哪
消息队列也好,一个原子操作的变量也好
然后把post请求做节流处理,确保上次请求完成才请求下一次。开启 HTTP 连接复用,不要每次post都创建新对象、新会话
替换掉延时,线程内用sleep。
批量置标题时关闭重绘,上边有哥们的代码里提到了
回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 9 天

发表于 2026-7-26 11:39:20 | 显示全部楼层   辽宁省丹东市
把数据映射到哈希表里,或者数组里,超级列表框只用于显示,超级列表框也不需要返回条一刷新显示,可以放循环里 一秒钟一刷新显示就行
回复

使用道具 举报

结帖率:50% (1/2)

签到天数: 8 天

发表于 2026-7-26 17:22:12 | 显示全部楼层   四川省南充市
看情况,卡的不是更新列表,是循环处理大量数据占用CPU导致的,考虑利用队列加多线程处理,数据存到内存,固定时间刷新更新显示

补充内容 (2026-7-26 17:26):
或者post请求修改为异步,同步请求等待时间不会释放性能,少量不影响,量大后会出现等待响应空闲时间太多,cpu不释放,实际上并没干啥事
回复

使用道具 举报

结帖率:97% (29/30)
发表于 2026-7-26 19:26:10 | 显示全部楼层   贵州省遵义市
莫不是把整个响应内容都往列表框中塞了?
回复

使用道具 举报

结帖率:0% (0/1)

签到天数: 2 天

发表于 2026-7-28 11:33:44 | 显示全部楼层   天津市天津市
运行时,一次性将列表的内容写到数组。多线程分配使用数组,必须做好许可证。线程从数组读取内容去测试,并将结果写到数组(也要用许可)。之后时钟定时刷新列表状态(许可)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表