2

我的问题是关于应用程序改进的类型/种类。我想提高我的线程速度(我不能提高线程的复杂性)。我的问题是,如果不是整数/longint 作为函数的参数,我将使用字节作为类型,这会改变/提高我的速度吗?

不是发送数组,而是发送指向这些数组的指针,这种技术会提高我的速度吗?

我可以使用哪些其他技巧来提高线程的速度(复杂性除外)

上面的代码是我使用的简化。

Type TArray = array of integer;
Type PArray = ^TArray;

Procedure TMyThread.ProcessFunction(iNr:integer; vArray:PArray);
begin
   vArray^[iNr-2]:=5;
   //......
end;

Procedure TMyThread.Execute;
var vArray:TArray;
    i,iNr:integer;
begin
   Randomize;
   While Not Terminated do
   begin
       iNr:=Random(240);
       SetLength(vArray,iNr);
       for i:=0 to iNr-1 do
          vArray[i]:=i+2

       ProcessFunction(iNr,@Array);
   end;
end;

有什么方法可以改善这种情况吗?

4

1 回答 1

4

目前尚不清楚所谓的性能问题在哪里,因为我们不知道 ProcessFunction 实际做了什么,但一种可能性是性能被 vArray 的(重新)分配杀死。如果是这种情况,您可能可以通过仅预分配一个 240 数组来加快速度,然后将其连同您在每次迭代中使用的实际大小一起传入。正如 David Heffernan 指出的那样,由于 TArray 已经是一个引用类型,因此没有必要使用显式指针。

于 2013-01-07T19:44:42.953 回答