Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#10

AW: bitmap32 and xor

  Alt 18. Sep 2011, 01:17
Hmm, seltsam, eigentlich sehe ich keinen Grund, warum er nicht funktionieren sollte. Aber ist ja auch nicht so wichtig... so groß ist der Geschindigkeitsvorteil ja auch nicht – im Zweifelsfalle sollte man da eh die lesbarere und portablere Variante bevorzugen.

Wenn die Länge immer durch 4 teilbar ist, kannst du den Code ja auch noch ein bisschen optimieren, indem du es PByte in PInteger änderst:
Delphi-Quellcode:
procedure XorMemBlock(Source1, Source2, Destination: PInteger; Count: Integer);
begin
  while Count > 0 do
  begin
    Destination^ := Source1^ xor Source2^;
    inc(Source1);
    inc(Source2);
    inc(Destination);
    dec(Count);
  end;
end;
Wie viel das in der Praxis ausmacht, kann ich nicht sagen, aber theoretisch sollte es schneller sein, weil der Prozessor eh immer 4 Bytes auf einmal lädt und somit weniger oft Daten aus dem RAM holen muss, wenn man immer in Vierer-Schritten arbeitet, als wenn man sich byteweise durcharbeitet.

Count musst du dann natürlich auch durch den Faktor 4 teilen.
  Mit Zitat antworten Zitat