@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;
...