【发布时间】:2013-01-07 17:46:40
【问题描述】:
我的问题是关于应用程序改进的类型/种类。我想提高我的线程速度(我不能提高线程的复杂性)。我的问题是,如果我将使用 byte 作为类型而不是整数/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;
有什么方法可以改善吗?
【问题讨论】:
-
至少解释一下如何将“参数”传递给线程。没有任何示例,重新打开是没有意义的
-
我看到要重新开放的投票?我不认为我们可以重新打开被钻石模组关闭的帖子。我错了吗?
-
TArray已经是参考。您的代码可以越界访问数组。你需要用一个具体而现实的例子来问一个真正的问题。以如此模糊的方式询问性能是没有意义的。 -
为什么每个人都认为线程可以解决他们的问题?
-
@NickHodges:我认为有人所说的关于 regexp 的内容也适用于线程:
Some people, when confronted with a problem, think “I know, I'll use threading.” Now they have two problems.
标签: multithreading performance delphi delphi-xe2 complexity-theory