线程Delphi的速度提升

时间:2013-01-07 17:46:40

标签: multithreading performance delphi delphi-xe2 complexity-theory

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

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

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

以上代码简化了我的使用。

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;

有什么方法可以改善这个吗?

1 个答案:

答案 0 :(得分:4)

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