Wie kann ich eine Aufzeichnung einfacher Typen schnell löschen?
Habe ich eine Struktur, die wie folgt definiert sind:
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;
Diese Struktur wird verwendet, um Tausende von Berechnungen in einem Algorithmus wie diese:
for i:=1 to 900000 do
begin
CleartheList(MyList);
DotheMath(MyList);
DotheChart(MyList);
end;
Ich bin auf der Suche nach einem schnellen Weg, um initializate die Werte, die ich TListSignals
0 false
.
Jetzt bin ich mit dieser :
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;
Wie kann ich das verbessern der Leistung des ClearListSignals
Verfahren?
InformationsquelleAutor der Frage Salvador | 2011-04-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
können Sie die
ZeroMemory
Prozedur, die sich in derWindows
Einheit.InformationsquelleAutor der Antwort RRUZ
Sollten Sie die standard-Delphi-Sprache-Funktion (Default)!
Und kein hack.. wie vorgeschlagen vor..
InformationsquelleAutor der Antwort Z.B.
InformationsquelleAutor der Antwort Misha
Zusätzlich zu dem, was gesagt wurde über
FillChar
undZeroMemory
(die intern nur Anrufe FillChar sowieso), können Sie reduzieren die Größe Ihres Eintrags durch die Verwendung vonbsignal: set of 1..6;
statt einzelne Boolesche Werte, die beschleunigen sollte die clearing-leicht.InformationsquelleAutor der Antwort Thorsten Engler
Können Sie SecureZeroMemory
http://msdn.microsoft.com/en-us/library/aa366877%28v=vs.85%29.aspx
LE: hier haben Sie, wie es zu benutzen in Delphi, wenn Ihre version nicht enthalten:
Mit SecureZeroMemory in Delphi
InformationsquelleAutor der Antwort RBA