Q
qqjm
Unregistered / Unconfirmed
GUEST, unregistred user!
呵呵,不好意思不知什么时候在(i3 shl 8)时加了一个“//”,是没有问题的!
另外,不知你们发现了没有我上面的代码写错了,分配了两次空间
--
SetLength(Data,iLength)
p := GetMemory(iLength*sizeof(TData));
==
就是因为SetLength(Data,iLength)
这一句增加了约0.0930秒的时间。
这是最快的代码,用时0.094秒:
===========================
procedure TForm1.Button3Click(Sender: TObject);
type
TData = packed Record
data :array[0..6]of byte;
end;
var
iLength:integer;
m,i1,i2,i3,i4,i5,i6,i7: integer;
pData : ^TData;
time:TTime;
Data:array of TData;
pointer;
begin
time := now;
ilength := 8347680;
p := GetMemory(iLength*sizeof(TData));
pData := p;
for i1 := 1 to 30 do
for i2 := i1+1 to 31 do
for i3 := i2+1 to 32 do
for i4 := i3+1 to 33 do
for i5 := i4+1 to 34 do
for i6 := i5+1 to 35 do
for i7 := i6+1 to 36 do
begin
with pData^ do
begin
data[0]:= i1;
data[1]:= i2;
data[2]:= i3;
data[3]:= i4;
data[4]:= i5;
data[5]:= i6;
data[6]:= i7;
end;
inc(pData);
end;
freeMem(p, iLength*sizeof(TData));
time := now - time;
showmessage('用时:'+Format('%0.4f',[time*24*60*60]) + '秒');
end;
-------------------------------
creation-zy最新代码在在我的机上最用时0.1400秒,是比较稳定的。
一次分配内存然后用指针用操作是最快的。只需要0.0940秒。
另外,不知你们发现了没有我上面的代码写错了,分配了两次空间
--
SetLength(Data,iLength)
p := GetMemory(iLength*sizeof(TData));
==
就是因为SetLength(Data,iLength)
这一句增加了约0.0930秒的时间。
这是最快的代码,用时0.094秒:
===========================
procedure TForm1.Button3Click(Sender: TObject);
type
TData = packed Record
data :array[0..6]of byte;
end;
var
iLength:integer;
m,i1,i2,i3,i4,i5,i6,i7: integer;
pData : ^TData;
time:TTime;
Data:array of TData;
pointer;
begin
time := now;
ilength := 8347680;
p := GetMemory(iLength*sizeof(TData));
pData := p;
for i1 := 1 to 30 do
for i2 := i1+1 to 31 do
for i3 := i2+1 to 32 do
for i4 := i3+1 to 33 do
for i5 := i4+1 to 34 do
for i6 := i5+1 to 35 do
for i7 := i6+1 to 36 do
begin
with pData^ do
begin
data[0]:= i1;
data[1]:= i2;
data[2]:= i3;
data[3]:= i4;
data[4]:= i5;
data[5]:= i6;
data[6]:= i7;
end;
inc(pData);
end;
freeMem(p, iLength*sizeof(TData));
time := now - time;
showmessage('用时:'+Format('%0.4f',[time*24*60*60]) + '秒');
end;
-------------------------------
creation-zy最新代码在在我的机上最用时0.1400秒,是比较稳定的。
一次分配内存然后用指针用操作是最快的。只需要0.0940秒。