这里的重点是优化。
现在:
type TSomeClass=class(TObject)
private
DataWrite: TBytes;
...
end;
Function TSomeClass.GetPacket: TBytes;
begin
SetLength(Result, Length(DataWrite));
Move(DataWrite[0],Result[0],Length(DataWrite));
end;
我要实现的目标:
Function TSomeClass.GetPacket: TBytes;
begin
Result := DataWrite;
end;
由于Delphi中的数组是指向第一个元素的指针,因此后者仅且仅写入4个字节,因此速度要快得多。这样对吗?
最佳答案
那将起作用,但是请注意,您现在正在使用客户端代码中调用GetPacket
的相同字节数组。这可能是一个坏主意。考虑一些对字节数组进行一些额外压缩或加密的网络库。这会创建很多与类进行交互而不使用公开接口的可能性,这很糟糕。因此,恕我直言,复制是更好的选择。
顺便说一句:我们在这里讨论的数组有多大?