Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#68

Re: Sehr schneller Primzahl-Finder

  Alt 24. Aug 2005, 09:01
@negaH: Gut, das wir nun alle auf dem Boden der Sachlichkeit angekommen sind. Sämtliche sachfremden Themen sind abgehackt. Eine Kleinigkeit noch: "C'est le tone, qui fait la musique" (oder so ähnlich)

Deine Ausführungen zur Optimierung sind theoretisch völlig klar. Ich hatte mich, wie erwähnt, rangesetzt und die Floatingpoint-Arithmetik durch reine Integer ersetzt, sogar den kompilieren Assembler überprüft. Danach hätte es einfach schneller sein _müssen_, verdammt. Aber isses nicht. Allerdings sind Lookup-Tabellen schneller, auch wenn es theoretisch nicht sein kann. Mit bedingten Sprunganweisungen war der Code von Phantom1 ca. 40% langsamer, als mit den Lookuptabellen: Hier brächte höchstens eine Sprungtabelle mehr, aber das geht imho in Delphi nicht.

Nur so, zum Ärgern : Die relevanten Teile deines Codes sind doch in Assembler, da kann man nicht mehr von PASCAL-Implementierung sprechen, oder? Egal, nur so..

@Phantom1: Soweit ich das gemessen habe, bringt die Implementierung von Pointern sehr wohl etwas, weil:
Delphi-Quellcode:
Var p : PByte;
...
p := @PrimeBits[0];
...
While Foo do begin
  p^:= Bar;
  inc (p);
  end;
empirisch gesehen schneller ist als:
Delphi-Quellcode:
i := 0;
While Foo Do begin
  PrimeBits[i] := Bar;
  inc (i);
  End;
...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat