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使用率就很高了
最后导致程序运行也慢了.! 展开
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使用率就很高了
最后导致程序运行也慢了.! 展开
4个回答
展开全部
什么代码都没用,CPU占用是windows在分配,与delphi无关,application.processmessage只是处理其他事件而已,cpu同样会占用很高。
无论是用线程还是什么,只要你的cpu闲置,windows就会考虑尽快用更多的cpu将你的指令执行完毕。
唯一的方法是调低自己的程序优先级,将自己降低,但是这也不保证就不占用cpu时间。
所以你不能考虑cpu占用,只需要考虑你的程序在执行大量代码的时候不会阻塞运行就行了。cpu占用你没法调整。
另外,楼上说的强制将代码循环停滞也是一种方法,不过这个就慢了,本来1秒钟可以计算出来的要分成几十秒钟来算了。
无论是用线程还是什么,只要你的cpu闲置,windows就会考虑尽快用更多的cpu将你的指令执行完毕。
唯一的方法是调低自己的程序优先级,将自己降低,但是这也不保证就不占用cpu时间。
所以你不能考虑cpu占用,只需要考虑你的程序在执行大量代码的时候不会阻塞运行就行了。cpu占用你没法调整。
另外,楼上说的强制将代码循环停滞也是一种方法,不过这个就慢了,本来1秒钟可以计算出来的要分成几十秒钟来算了。
展开全部
那再加一句休眠看下
sleep(10);
application.ProcessMessages;
我也不想多说啦
sleep(10);
application.ProcessMessages;
我也不想多说啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
喔,想想
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询