Delphi For循环占用CPU100%释放问题 20

vari,j:integer;fori:=memo1.lines.count-1downto0dobeginforj:=i-1downto0dobeginifcompar... var
i,j:integer;
for i:=memo1.lines.count-1 downto 0 do
begin
for j:=i-1 downto 0 do
begin
if comparestr(memo1.lines.strings[i],memo1.lines.strings[j])=0 then
begin

memo1.lines.delete(i);
break;
end;
end;
end;

用这个For循环,如果去重复字符串多的话..一直循环,占用CPU100%,速度很慢,请问怎么才能去一个重复字符串后释放一下CPU呢.或者让CPU不到100%..多线程应该可以吧?可是现在学的是基础,还不会.请哪位高手老师指导一下解决这个的方法
sleep(10)
application.ProcessMessages
这两个我都用了!再处理小的字符串时CPU还算可以..
但是.处理上1000的字符串的话...慢慢的CPU使用率就很高了
最后导致程序运行也慢了.!
展开
 我来答
kowana
2008-12-08 · TA获得超过227个赞
知道答主
回答量:132
采纳率:0%
帮助的人:171万
展开全部
什么代码都没用,CPU占用是windows在分配,与delphi无关,application.processmessage只是处理其他事件而已,cpu同样会占用很高。

无论是用线程还是什么,只要你的cpu闲置,windows就会考虑尽快用更多的cpu将你的指令执行完毕。

唯一的方法是调低自己的程序优先级,将自己降低,但是这也不保证就不占用cpu时间。

所以你不能考虑cpu占用,只需要考虑你的程序在执行大量代码的时候不会阻塞运行就行了。cpu占用你没法调整。

另外,楼上说的强制将代码循环停滞也是一种方法,不过这个就慢了,本来1秒钟可以计算出来的要分成几十秒钟来算了。
cb120520025
2008-12-08 · TA获得超过347个赞
知道小有建树答主
回答量:323
采纳率:0%
帮助的人:572万
展开全部
那再加一句休眠看下
sleep(10);
application.ProcessMessages;
我也不想多说啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kydouya
2008-12-07 · TA获得超过280个赞
知道小有建树答主
回答量:410
采纳率:0%
帮助的人:104万
展开全部
喔,想想
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
x1q1j1
2008-12-08
知道答主
回答量:25
采纳率:0%
帮助的人:20.6万
展开全部
使用多线程啊!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式