我是这样试的,for i:=0 to 1500000 do
if a then
begin
b //执行次数1500000-1000次
end else
begin
c //执行1000次
end;b,c中都要操作数组,其中c 控制条件a,
问题是:
假设c的代码为空,执行时间就是70,
C不为空时,单独测试C,1000次循环所花时间仅为10但如果同时测试ABC
总时间就是150,也就是说 else 似乎用了70的时间?
if a then
begin
b //执行次数1500000-1000次
end else
begin
c //执行1000次
end;b,c中都要操作数组,其中c 控制条件a,
问题是:
假设c的代码为空,执行时间就是70,
C不为空时,单独测试C,1000次循环所花时间仅为10但如果同时测试ABC
总时间就是150,也就是说 else 似乎用了70的时间?
但是C的代码多啊,也许循环一次的时间比远远小于几行代码的时间比
所以说问题不奇怪
for i:=0 to 1500000 do
if (i % 2) = 0 then
begin
procedure_b(i);
end else
begin
procedure_c(i);
end; 象这样子的指令,拆成
[code=Delphi(Pascal)i := 0;
while i <= 1500000 do
begin
procedure_b;
inc(i,2);
end;
i := 1;
while i <= 1499999 do
begin
procedure_c;
end;[/code]
效率会有相当大的差别.
while i <= 1500000 do
begin
procedure_b(i);
inc(i,2);
end;
i := 1;
while i <= 1499999 do
begin
procedure_c(i);
inc(i,2);
end;