var
x,y,xx,yy;integer;
beginfor x:=0 to 200 do begin
for y:=0 to 234 do begin
这里有代码
for xx:=0 to 50 do begin
for yy:=0 to 88 do begin
这里有代码
end;
这里有代码
end;
这里有代码
end;
end;
for x:=0 to 120 do begin
这里有代码
end;
for y:=0 to 300 do begin
这里有代码
end;end;for循环结构如上,但小弟我的程序运行之慢呀,如何才能提高运行速度了,
---------------------------
或 影响速度主要由哪些引起的了.提高速度的最好办法是什么呢?
x,y,xx,yy;integer;
beginfor x:=0 to 200 do begin
for y:=0 to 234 do begin
这里有代码
for xx:=0 to 50 do begin
for yy:=0 to 88 do begin
这里有代码
end;
这里有代码
end;
这里有代码
end;
end;
for x:=0 to 120 do begin
这里有代码
end;
for y:=0 to 300 do begin
这里有代码
end;end;for循环结构如上,但小弟我的程序运行之慢呀,如何才能提高运行速度了,
---------------------------
或 影响速度主要由哪些引起的了.提高速度的最好办法是什么呢?
for I := 0 to 100 do
begin
if then
begin
end
else
begin
end;
end;
改为
if then
begin
for do
begin
end;
end
else
begin
for do
begin
end;
end;
for i:=0 to 100 do //低效率的循环!
begin
for j:=0 to 5 do
sum:=sum + a[i][j];
end;
相比之下,如果这样写:
for j:=0 to 5 do //高效率
begin
for i:=0 to 100 do
sum:=sum + a[i][j];
end; 另外,如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。
“zihan(子寒)”说的也就是这个意思, 如:
程序 A:
for i:=0 to N do //效率低但程序简洁
begin
if (condition) then
DoSomething
else
DoOtherthing;
end;
如果这样写:
程序 B:
if (condition) then //效率高但程序不简洁
for i:=0 to N do
DoSomething
else
for i:=0 to N do
DoOtherthing;程序 A 比程序 B 多执行了N-1次逻辑判断。并且由于前者老要进行逻辑判断,打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。如果N非常大,最好采用程序 B 的写法,可以提高效率。如果N非常小,两者效率差别并不明显,采用程序 A 的写法比较好,因为程序更加简洁。