我有一个这样定义的结构:
const MaxSignalRecords=255; type TSignalRecord=record signal1 : integer; signal2 : integer; signal3 : integer; signal4 : integer; signal5 : integer; signal6 : integer; bsignal1 : Boolean; bsignal2 : Boolean; bsignal3 : Boolean; bsignal4 : Boolean; bsignal5 : Boolean; bsignal6 : Boolean; end; TListSignals = Array[0..MaxSignalRecords-1] of TSignalRecord;
这种结构用于在这样的算法中进行数千计算:
for i:=1 to 900000 do begin CleartheList(MyList); DotheMath(MyList); DotheChart(MyList); end;
我正在寻找一种快速的方式将我的TListSignals的值初始化为0和false。
现在我使用这个:
procedure ClearListSignals(var ListSignals:TListSignals); var i :Integer; begin for i := 0 to MaxSignalRecords - 1 do with ListSignals[i] do begin signal1 :=0; signal2 :=0; signal3 :=0; signal4 :=0; signal5 :=0; signal6 :=0; bsignal1 :=false; bsignal2 :=false; bsignal3 :=false; bsignal4 :=false; bsignal5 :=false; bsignal6 :=false; end; end;
如何提高ClearListSignals过程的性能?
解决方法
您可以使用位于Windows单元中的ZeroMemory过程。
var MyList : TListSignals; begin ZeroMemory(@Mylist,SizeOf(MyList)); end;