这里的重点是优化。

现在:

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的相同字节数组。这可能是一个坏主意。考虑一些对字节数组进行一些额外压缩或加密的网络库。这会创建很多与类进行交互而不使用公开接口的可能性,这很糟糕。因此,恕我直言,复制是更好的选择。

顺便说一句:我们在这里讨论的数组有多大?

10-08 02:35