Die Schleife aus Beitrag #8 ist suboptimal zum Testen weil zu viele störende Anweisungen darin enthalten sind.
Man muss schon alle Varianten hintereinander ausführen.
Und der Code sollte "inline" sein - eine Unterfunktion verbietet sich hier, denn sonst misst man hauptsächlich die Zeit für den Funktionsaufruf.
Delphi-Quellcode:
s1 := '';
s2 := '';
for i := x downto 0 do // leere Strings
begin
{$IfDef DIRECT}
if s1 = s2 then Inc(c);
{$Else}
//Indirekt - Beispiel 2
if Length(s1) = Length(s2) then
if s1[1] = s2[1] then
if s1[Length(s1)] = s2[Length(s2)] then
if s1 = s2 then Inc(c);
{$EndIf}
end;
s1 := 'abcde';
s2 := '123456'
for i := x downto 0 do // unterschiedliche Länge
// gleicher Inhalt wie oben
end;
s1 := 'abcdef';
s2 := '123456'
for i := x downto 0 do // gleiche Länge, komplett unterschl. Inhalt
// gleicher Inhalt wie oben
end;
s1 := 'abcdef';
s2 := 'abcdef'
for i := x downto 0 do // gleiche Strings
// gleicher Inhalt wie oben
end;
s1 := 'abcdef------------------------------1';
s2 := 'abcdef------------------------------2'
for i := x downto 0 do // letztes Zeichen verschieden
// gleicher Inhalt wie oben
end;
Assert(c = 2*(x+1));