Zunächst mal gucken, ob es bestimmte Werte gibt, die fest sind oder nicht jedes mal neu berechnet werden, wie Jumpy in #4 gesagt hat.
Ansonsten könnte auch SSE interessant sein. Die 128Bit breiten Register von SSE bestehen, wenn ich es richtig verstanden habe, aus 4 32Bit breiten Unterregistern, sind also quasi ein Vierer-Vektor. Operationen werden dann immer für alle Register ausgeführt.
Deine 3 Ergebnisse kannst du ja als Dreier-Vektor auffassen. Was du aktuell machst ist ja folgendes:
Delphi-Quellcode:
Ergebnis[1] := (A*X1 + B*Y1 + C*Z1) div Wert;
Ergebnis[2] := (A*X2 + B*Y2 + C*Z2) div Wert;
Ergebnis[3] := (A*X3 + B*Y3 + C*Z3) div Wert;
Mit SSE könntest du (A*X1 + B*Y1 + C*Z1), (A*X2 + B*Y2 + C*Z2) und (A*X3 + B*Y3 + C*Z3) in einen Vektor packen, und dann alle Divisionen in einem Rutsch ausführen!
Ich habe aber selbst noch nicht mit SSE gearbeitet, daher kann ich es nur oberflächlich beschreiben...