我的问题是关于应用程序改进的类型/种类。我想提高线程速度(我无法提高线程的复杂性)。我的问题是,如果不使用整数/ 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;


有什么方法可以改善这一点?

最佳答案

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

08-19 10:31