TC官方合作论坛

 找回密码
 立即注册
查看: 992|回复: 13
打印 上一主题 下一主题

[问题] 高手进!我程序顿卡!资源优化,程序优化问题!

[复制链接]
跳转到指定楼层
楼主
发表于 2014-11-3 21:42:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 madwinder 于 2014-11-4 13:10 编辑

最近制作了一个监视某论坛某板块新帖子的程序。
思路是通过每20秒寻找网页上的元素,然后对比元素的文本,判断是不是新帖子,
  1. 功能 找帖子()
  2.     返回值2
  3.     辅助.等待(200)
  4.     网站.判断网页加载()
  5.     help.sleep(200)
  6.     text2=网页.获取元素信息("浏览器0","text","tag:TH&index:"&编辑框.获得文本("编辑框0") )
  7.     如果(text2=="")
  8.         辅助.消息框("请重新设置索引","获取内容失败")
  9.     否则
  10.         traceprint(text2)
  11.         是否成功=字符串.分割(text2," ",返回值2)
  12.         新帖2=返回值2[1]
  13.     如果结束
  14.     如果(新帖2!=新帖1)
  15.         traceprint("找到了")
  16.         标签.设置文本("标签1","有新帖子")
  17.         标签.设置颜色("标签1",#ff0000)
  18.         子窗口句柄=控件.打开窗口("dsfsdfsf12",真)
  19.         窗口.设置标题(子窗口句柄,"有新帖子")
  20.         窗口.获取位置(窗口句柄,0,0)
  21.         新帖1=新帖2
  22.         如果(定时是否注册==0)
  23.             定时是否注册=定时器.注册("提示",1320000)
  24.             traceprint("已激活提示功能")
  25.             
  26.         如果结束
  27.         

  28.         
  29.     如果结束
  30.    
  31. 功能结束
复制代码
  1. 功能 定时器0_时钟()
  2. 辅助.等待(100)
  3. 网页.刷新("浏览器0")
  4. 辅助.等待(3000)
  5. 网站.找帖子()
  6. 辅助.等待(1000)
  7. traceprint("定时检查新帖子中")
  8. 功能结束
复制代码
再附上定时器代码。
功能上倒是没问题,但是没当程序运行到找元素对比的时候,电脑就会顿卡,开始以为是3核的AMD,XP系统不好,
后来回家后用I5,8G的电脑还是会发现顿卡,
AMD机子的程序最高是30%的CPU,I5机子最高才8%左右,发生在寻找元素,对比的那几秒。之后变回0,内存占用 40-90M之间。
我的I5电脑没理由会卡的啊。。之前用找图的方法,2台的电脑都不卡,因为不想伪最小化,所以改成找元素,竟然卡了.

每20秒寻找是通过定时器触发的,
还会,如果线程=线程.开启("网站.找帖子","")
网站.找帖子()
2种开启方式,那个更省资源.我加了几个延时,用网站.找帖子()开启感觉CPU占用低了,但是还是顿卡.

我测试顿卡的方法是,找个记事本,在编辑框一直按1,就会成排,不断的出来,打开任务管理器,只要CPU由0提升,也就是找元素,那1就不会打出来,要等1-3秒才出.


回复

使用道具 举报

沙发
发表于 2014-11-3 23:08:49 | 只看该作者
试试用线程吧,感觉可能定时器有点关系?
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2014-11-3 23:56:15 | 只看该作者
本帖最后由 madwinder 于 2014-11-4 00:04 编辑
cylhb 发表于 2014-11-3 23:08
试试用线程吧,感觉可能定时器有点关系?

我也觉得定时器有关,我是后台,最小化加托盘程序的。所以后来改用 循环 辅助等待20秒,果然不顿卡了,还有一个问题请指教。
如果没涉及循环,下面2种方法,哪种比较省资源。
线程=线程.开启("网站.找帖子","")
网站.找帖子()
回复 支持 反对

使用道具 举报

地板
发表于 2014-11-4 03:04:04 | 只看该作者
每次定时器到了不关闭原先线程,网页加载有时候会超过20秒,如果不及时关闭,20秒后定时器又开启了一个线程,这样重复就会在一直一直开启,=你开了很多很多个线程,你说能不卡吗?
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2014-11-4 12:56:11 | 只看该作者
498518599 发表于 2014-11-4 03:04
每次定时器到了不关闭原先线程,网页加载有时候会超过20秒,如果不及时关闭,20秒后定时器又开启了一个线程 ...

我用的是:网站.找帖子()
并不是线程。
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2014-11-4 12:56:47 | 只看该作者
498518599 发表于 2014-11-4 03:04
每次定时器到了不关闭原先线程,网页加载有时候会超过20秒,如果不及时关闭,20秒后定时器又开启了一个线程 ...

你有看清楚我的CPU使用吗?还没到10%
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2014-11-4 13:10:57 | 只看该作者
498518599 发表于 2014-11-4 03:04
每次定时器到了不关闭原先线程,网页加载有时候会超过20秒,如果不及时关闭,20秒后定时器又开启了一个线程 ...

我的定时器代码已贴上,麻烦看一下。
回复 支持 反对

使用道具 举报

8#
发表于 2014-11-4 20:01:49 | 只看该作者
定时器开启找帖子,我看你并没有开启线程,所以才会卡~完毕
返回值=网站.找帖子()
如果(返回值=1)
如果(返回值=2)
功能结束
判断得到返回值再注册新的定时器
功能 找帖子()
如果(1>2)
返回 1
如果结束
如果(1<2)
返回2
如果结束
功能结束
回复 支持 反对

使用道具 举报

9#
发表于 2014-11-4 20:03:44 | 只看该作者
很巧我最近也在做这个,并没有发现会升高CPU ,我的监控每秒都在刷新,CPU最高不会超过3
回复 支持 反对

使用道具 举报

10#
发表于 2014-11-4 20:10:10 | 只看该作者
线程=线程.开启("网站.找帖子","")
网站.找帖子()


建议还是用线程吧,就算你自己不循环,很多函数内部实现里面也有一定的循环和需要一定的时间,总会影响界面线程,出现无响应和卡顿的情况。。
所以一般不管做什么我都会新开线程来做,除非真的完全不耗费时间和不影响界面线程
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18043773号

GMT+8, 2025-9-23 19:27 , Processed in 0.153518 second(s), 25 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

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