比较了一下。我感觉稍微有效的点的代码在Grow部分。
这是TMyList的Grow
procedure TMyList.Grow;
begin
if FCapacity<64 then SetCapacity(FCapacity+8)
else if FCapacity<256 then SetCapacity(FCapacity+32)
else if FCapacity<1024 then SetCapacity(FCapacity+64)
else SetCapacity(FCapacity+128);
end;
begin
if FCapacity<64 then SetCapacity(FCapacity+8)
else if FCapacity<256 then SetCapacity(FCapacity+32)
else if FCapacity<1024 then SetCapacity(FCapacity+64)
else SetCapacity(FCapacity+128);
end;
这是TList的
procedure TList.Grow;
var
Delta: Integer;
begin
if FCapacity > 64 then
Delta := FCapacity div 4
else
if FCapacity > 8 then
Delta := 16
else
Delta := 4;
SetCapacity(FCapacity + Delta);
end;
var
Delta: Integer;
begin
if FCapacity > 64 then
Delta := FCapacity div 4
else
if FCapacity > 8 then
Delta := 16
else
Delta := 4;
SetCapacity(FCapacity + Delta);
end;