我的问题是关于应用程序改进的类型/种类。我想提高线程速度(我无法提高线程的复杂性)。我的问题是,如果不使用整数/ 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已经是引用类型,所以不需要显式指针。