下面两段代码哪一个运行速度比较快一些,请高手指教。代码1:
procedure test1;
var
i,j: integer;
n: set of byte;
begin
n := [1,2,3,4,5,6,7,8,9,0];
for i := 0 to 10000 do
begin
if (i in n) then
Inc(j);
end;
end;
代码2:
procedure test2;
var
i,j: integer;
n: string;
begin
n := '1234567890';
for i := 0 to 10000 do
begin
if (Pos(IntToStr(i),n) > 0 then
Inc(j);
end;
end;
procedure test1;
var
i,j: integer;
n: set of byte;
begin
n := [1,2,3,4,5,6,7,8,9,0];
for i := 0 to 10000 do
begin
if (i in n) then
Inc(j);
end;
end;
代码2:
procedure test2;
var
i,j: integer;
n: string;
begin
n := '1234567890';
for i := 0 to 10000 do
begin
if (Pos(IntToStr(i),n) > 0 then
Inc(j);
end;
end;
var
i,j: integer;
n: set of byte;
K:Cardinal;
begin
K:=GetTickCount;
n := [1,2,3,4,5,6,7,8,9,0];
for i := 0 to 10000000 do
begin
if (i in n) then
Inc(j);
end;
Edit1.Text:=IntToStr(GetTickCount-K);
end;procedure TForm1.Button2Click(Sender: TObject);
var
i,j: integer;
n: string;
K:Cardinal;
begin
K:=GetTickCount;
n := '1234567890';
for i := 0 to 100000 do
begin
if Pos(IntToStr(i),n) > 0 then
Inc(j);
end;
Edit2.Text:=IntToStr(GetTickCount-K);
end;Edit1显示16, Edit2显示94
test1循环10000000次只用16微秒
test2循环100000次却用了94微秒
var
time1:Longint;
begin
time1:=GetTickCount;
.........代码区
time1:=Gettickcount-time1;
end;