Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Amateurprofi,
30. Mai 2011
@gammatester:
Funktioniert einwandfrei. Mal wieder was dazugelernt.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Amateurprofi,
30. Mai 2011
Das ist bei mir ganz anders.
Bei 100 Mio Durchläufen braucht (bei mir) die "alte" 1125 ms, die "neue" 843 ms, wobei auch bei mir Wert2 nur einmal berechnet wird.
Auch die Ergebnisse sind nicht identisch.
Bei den Werten, die ich in einem früheren Beitrag eingesetzt habe erhalte ich folgende Ergebnisse
"alte" 25324 235794 447532
"neue" 25278 235362 446713
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Amateurprofi,
30. Mai 2011
na ja, bit4bit's idee war sicherlich, das nicht auf Float-Basis zu machen sondern bei Integer-Werten zu bleiben.
Warten wir doch mal seine Erklärung ab, wie er sich das gedacht hat.
Vielleicht funktioniert das ja irdenwie.
Ich hab mich mit dieser speziellen Thematik bisher noch nicht beschäftigt und kann keine fundierte Aussage machen ob das prinzipiell möglich ist oder nicht.
Schneller wäre...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Amateurprofi,
30. Mai 2011
Ich vermute bit4bit wollte sowas ähnliches machen wie mit 1/Wert zu multiplizieren, statt durch wert zu dividieren. So wie es da steht funktioniert das offensichtlich nicht,
Vielleicht könnte bit4bit mal erläutern was er sich dabei gedacht hat.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Amateurprofi,
30. Mai 2011
@bit4bit;
PROCEDURE Test1;
var Wert2 : Integer;
begin
Wert2 := Integer((2 shl 32) div Wert);
Ergebnis := Integer(((A*x + B*Y + C*Z) * Wert2) shr 32);
Ergebnis2 := Integer(((A*x2 + B*Y2 + C*Z2) * Wert2) shr 32);
Ergebnis3 := Integer(((A*x3 + B*Y3 + C*Z3) * Wert2) shr 32);
end;
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Amateurprofi,
28. Mai 2011
@OldGrumpy:
Das unten stehende war mein Versuch.
Ausschließlich mit der FPU zu arbeiten hat außer deutlicher Verschlechterung nichts gebracht.
Vielleicht bringt eine gemische Lösung etwas, z.B. alle Multiplikationen und Additionen in den
'normalen' Registern machen und nur die Divisionen mit der FPU.
Ich glaube aber nicht, daß das was bringt. Der, wie du sagst, "Oldschool"...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Amateurprofi,
27. Mai 2011
@Memnarch:
Ich hab das mal mit der FPU versucht, aber die Ergebnisse sind, gelinde gesagt, ernüchternd (etwa doppelte Rechenzeit vs. simplem Delphi-Code).
Sorry.
Ich hab auch über SSE3 nachgedacht, aber keinen vernünftigen Ansatz gefunden.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Amateurprofi,
27. Mai 2011
@Memnarch:
Ich würde ja ganz gern mal versuchen eine flinke Funktion zu schreiben, aber leider kann ich deinen Beiträgen nicht entnehmen, welche Variablen-Typen du verwendest.
Also sag mal :
a) Sind das Bytes oder Words oder ... ?
b) Welche minimalen und maximalen Werte können die Variablen A, B, C, x, Y, Z, x2, Y2, Z2, x3, Y3 und Z3 annehmen ?
c) Falls du z.B. Int64 Variablen nimmst, der...