Hallo,
ich habe die tatsächlich die selben Bedingungen.Ob 4 oder 2 Gb Speicher ist ja hier wohl nicht relevant.
Es könnte daran liegen, das diese AMD CPU 6 MB Level III Cache hat, aber dies kann nicht soviel ausmachen, schließlich durchsuchst Du in 103 ms einen nicht vorhandenen String und ich brauche 69 ms, bei doppelter CPU-frequenz.
Müßig darüber nachzudenken, Du hast ja noch etwas schnelleres gefunden.
Gruß Horst
P.S.
Heute morgen bei mir mal
http://www.delphipraxis.net/attachme...tring_test.zip getestet, aber die Funktion an eine CPU gekettet.
Das bringt aber fast nichts, die Messwerte schwanken etwas weniger.Ich klicke 4..5 mal schnell auf die Start Test Schaltfläche und nehme die letzte Ausgabe.
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject); //Test starten
var
Filestream: TFileStream;
SuchWort, SuchText: string;
i, Ergebnis, Durchlaeufe: integer;
samask, pamask, tamask: NativeUInt;
begin
// Thread auf 1 CPU fixieren
GetProcessAffinityMask(GetCurrentProcess, pamask, samask);
if pamask = 0 then
exit;
tamask := 1;
while tamask and pamask = 0 do
tamask := tamask shl 1;
SetThreadAffinityMask(GetCurrentThread, tamask);
..
Ausgabe:
Code:
"Taxi"
BMH Count: 100000 in 313ms
SP Search Count: 100000 in 549ms
Asm AmatProf: 100000 in 444ms
QSSearch Count: 100000 in 280ms
Asm himitsu: 100000 in 273ms
Std PosEx Count: 100000 in 329ms
" Taxi"
BMH Count: 100000 in 275ms
SP Search Count: 100000 in 524ms
Asm AmatProf: 100000 in 638ms
QSSearch Count: 100000 in 248ms
Asm himitsu: 100000 in 729ms
Std PosEx Count: 100000 in 1000ms
zuvor , man sieht
Asm Count=
Asm Amateur Profi jetzt 20% schneller ist, wie kann das sein, der selbst Code, der selbe Compiler (Laz 1.08/FPC 2.6.2) ?
//" Taxi" // Ein häufiger Buchstabe vorne
//
Asm Count: 100000 in 819ms
// BMH Count: 100000 in 284ms <---
// SP Search Count: 100000 in 544ms
// Std PosEx Count: 100000 in 1021ms
// himitsu Count: 100000 in 745ms