Einzelnen Beitrag anzeigen

Horst_

Registriert seit: 22. Jul 2004
Ort: Münster Osnabrück
116 Beiträge
 
#47

AW: Boyer Moore Algorithmus

  Alt 9. Jun 2013, 14:10
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

Geändert von Horst_ (10. Jun 2013 um 06:58 Uhr) Grund: Mal gemessen.
  Mit Zitat antworten Zitat