2

私の質問は、アプリケーションの改善の種類/種類に関するものです。スレッド速度を向上させたい(スレッドの複雑さを向上させることはできません)。私の質問は、関数のパラメーターとして整数/整数の代わりにバイトを型として使用するかどうかです。これにより、速度が変更/改善されますか?

配列を送信する代わりに、これらの配列へのポインターを送信すると、この手法で速度が向上しますか?

スレッドの速度を向上させるために他にどのようなトリックを使用できますか(複雑さを除く)

上記のコードは、私が使用しているものを単純化したものです。

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の配列を1つだけ事前に割り当ててから、各反復で使用している実際のサイズとともに渡すことで、速度を上げることができます。また、David Heffernanが指摘しているように、TArrayはすでに参照型であるため、明示的なポインターを持つ必要はありません。

于 2013-01-07T19:44:42.953 に答える