-
Forum: Algorithmen, Datenstrukturen und Klassendesign
FreePascal
by Panthrax,
21. Mär 2012
{$DEFINE INT64DATA}
{$DEFINE LAPTOP}
#39, Pascal 10000000
#51, Pascal 10000000
#61, Pascal 10000000
#59, Assem 10000000
Messung #39, Pascal #51, Pascal #61, Pascal #59, Assem
1,3333535,239 ,3333535,238 ,3333535,217 ,3333535,138
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
FreePascal
by Panthrax,
20. Mär 2012
Vielen Dank für den Kompilerschalter! Hier meine Messwerte auf einem i7 M640 @ 2,8 GHz, Windows 7 64 Bit:
{$DEFINE INT64DATA}
#61, Pascal 10000000
#39, Pascal 10000000
#51, Pascal 10000000
#59, Assem 10000000
Messung #61, Pascal #39, Pascal #51, Pascal #59, Assem
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
FreePascal
by Panthrax,
20. Mär 2012
11 Messungen:
function Intersect(var Left: TSampleArray; const Right: TSampleArray);
* mit Length(Left) = Length(Right) = N = 10000000 // 10 Mio.
* mit denselben Daten für jede Routine
* mit zufällig generierten Daten für jede Messung
* in Millisekunden
Messung #19, Pascal #39, Pascal #61, Pascal #35, Assembler #59, Assembler
1 270 225 ...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
FreePascal
by Panthrax,
17. Mär 2012
Die Testdatenerstellung finde ich etwas umständlich. Das ist aber unwichtig, solange die erzeugten Daten gültig sind: Array < Array mit I < J und I, J: Low(Array)..High(Array). Als Mensch erschwert es mir aber die Testdaten bewerten zu können.
Ja, ich hatte für die Assemblerroutine einen separaten Aufruf geschrieben, weil der Typ von den anderen Routinen abwich.
So auf die Schnelle werde...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
FreePascal
by Panthrax,
17. Mär 2012
Mein Algorithmus hatte einen Fehler. Er hatte einige Treffer überprungen, daher die kleinere Schnittmenge. Hier die Korrektur:procedure Intersect47(var Left: TSampleArray; const Right: TSampleArray);
type
{$PointerMath On}
PInt64 = ^Int64;
{$PointerMath Off}
var
L, R, LeftEnd, RightEnd: PInt64;
N: NativeInt;
begin
N := 0;
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
FreePascal
by Panthrax,
16. Mär 2012
11 Messungen:
function Intersect(var Left: TSampleArray; const Right: TSampleArray);
* mit Length(Left) = Length(Right) = N = 10000000 // 10 Mio.
* mit denselben Daten für jede Routine
* mit zufällig generierten Daten für jede Messung
* in Millisekunden
Messung #19, Pascal #39, Pascal #45, Pascal #35, Assembler
1 242 224 160 ...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
FreePascal
by Panthrax,
15. Mär 2012
11 Messungen:
function Intersect(var Left: TSampleArray; const Right: TSampleArray);
* mit Length(Left) = Length(Right) = N = 10000000 // 10 Mio.
* mit denselben Daten für jede Routine
* mit zufällig generierten Daten für jede Messung
Messung #19, Pascal #39, Pascal #37, Pascal #35, Assembler
1 260 231 221 65
...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
FreePascal
by Panthrax,
15. Mär 2012
+1
11 Messungen:
function Intersect(var Left: TSampleArray; const Right: TSampleArray);
* mit Length(Left) = Length(Right) = N = 10000000 // 10 Mio.
* mit denselben Daten für jede Routine
* mit zufällig generierten Daten für jede Messung
Messung #19, Pascal #37, Pascal #35, Assembler