G
gxcooo
Unregistered / Unconfirmed
GUEST, unregistred user!
也许大家这样做过:
分配2块内存,然后象数组一样操作这2个内存块,并有时需要交换2块内存(为了速度,只换指针,不挪数据);
在c++里很简单:
先
short * buf1;
short * buf2
buf1 = new short[BACKWIDTH*BACKHEIGHT];
然后 buf1[k]就可以了
short * temp
buf1=temp;
buf1=buf2;
buf2=buf1;
在Object Pascal里我没想出好方法:
type
TBuf = array of SmallInt;
GetMem(Buf1, WinWidth * WinHeight * SizeOf(SmallInt));
//来个类型转化,很痛苦
TBuf(Buf1)[k - 1]
Temp := Buf1;
Buf1 := Buf2;
Buf2 := Temp;
这明显的是c++快嘛
//////////////////////////////////////////////////////////////////////////////
另外还有个疑惑:
代码1:
//复制象素
for d := 0 to CDepth - 1 do
begin
TBMap(Bitmap2)[pos2] := TBMap(Bitmap1)[pos1];
Inc(Pos1);
Inc(Pos2);
end;
代码2:
Move(TBMap(Bitmap1)[pos1],TBMap(Bitmap2)[pos2],CDepth);
代码一居然比代码2快不少,明明代码一是一个一个复制的,而代码2是整个复制的,就是不是
整个复制的也不致于比代码1慢吧?
分配2块内存,然后象数组一样操作这2个内存块,并有时需要交换2块内存(为了速度,只换指针,不挪数据);
在c++里很简单:
先
short * buf1;
short * buf2
buf1 = new short[BACKWIDTH*BACKHEIGHT];
然后 buf1[k]就可以了
short * temp
buf1=temp;
buf1=buf2;
buf2=buf1;
在Object Pascal里我没想出好方法:
type
TBuf = array of SmallInt;
GetMem(Buf1, WinWidth * WinHeight * SizeOf(SmallInt));
//来个类型转化,很痛苦
TBuf(Buf1)[k - 1]
Temp := Buf1;
Buf1 := Buf2;
Buf2 := Temp;
这明显的是c++快嘛
//////////////////////////////////////////////////////////////////////////////
另外还有个疑惑:
代码1:
//复制象素
for d := 0 to CDepth - 1 do
begin
TBMap(Bitmap2)[pos2] := TBMap(Bitmap1)[pos1];
Inc(Pos1);
Inc(Pos2);
end;
代码2:
Move(TBMap(Bitmap1)[pos1],TBMap(Bitmap2)[pos2],CDepth);
代码一居然比代码2快不少,明明代码一是一个一个复制的,而代码2是整个复制的,就是不是
整个复制的也不致于比代码1慢吧?