Heute beschäftigen wir uns mal mit der Programm-Optimierung
Um etwas genauer zu sein geht es ums vertauschen von 2 Bytes / Integers / Longs miteinander. Solche Vorgänge benötigt man z.B. bei Sortier-Funktionen.
Literatur gibts da zu auf der Wikipedia - siehe unten.
Wenn man 2 Bytes vertauschen will, verwendet man normalerweise folgenden Code:
XOR Swap ist jedoch die schnellere Methode:
Bei Arrays ist die schnellste Methode CopyMemory / RtlMoveMemory:
Hier meine Test-Ergebnisse:
Achtung!
Die gelisteten Zeiten sind als kompilierte .exe.
In der IDE ist das Kopieren mehr als doppelt so schnell wie die XOR-Methode!
Ein bisschen Literatur dazu findet man auch in der Wikipedia: XOR swap algorithm
Leider hat dieser Algorithmus nicht so eine Effizienz wie bspw. in Assembler, da man nicht direkt auf die Register zugreifen kann.
so long..
Andy
Keywords: Visual Basic, VB6, XOR Swap Algorithm, XOR Swap Algorithmus, XOR, Exklusiv Oder, CopyMemory, RtlMoveMemory
Um etwas genauer zu sein geht es ums vertauschen von 2 Bytes / Integers / Longs miteinander. Solche Vorgänge benötigt man z.B. bei Sortier-Funktionen.
Literatur gibts da zu auf der Wikipedia - siehe unten.
Wenn man 2 Bytes vertauschen will, verwendet man normalerweise folgenden Code:
XOR Swap ist jedoch die schnellere Methode:
Bei Arrays ist die schnellste Methode CopyMemory / RtlMoveMemory:
VB.NET-Quellcode
- 'API-Deklaration:
- Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
- (Destination As Any, Source As Any, ByVal Length As Long)
- 'Code:
- Dim x() as Byte 'oder integer oder long
- Dim y() as Byte
- Dim z() as Byte
- redim x(255)
- redim y(255)
- redim z(255)
- 'x(...) und y(...) befüllen ...
- 'Austausch
- 'Der erste Parameter ist das 1. Byte des Ziels,
- 'der zweite Parameter das 1. Byte der Quelle und
- 'der dritte Parameter die Länge der Daten IN BYTES!
- CopyMemory z(0), x(0), 256
- CopyMemory x(0), y(0), 256
- CopyMemory y(0), x(0), 256
Hier meine Test-Ergebnisse:
Achtung!
Die gelisteten Zeiten sind als kompilierte .exe.
In der IDE ist das Kopieren mehr als doppelt so schnell wie die XOR-Methode!
Ein bisschen Literatur dazu findet man auch in der Wikipedia: XOR swap algorithm
Leider hat dieser Algorithmus nicht so eine Effizienz wie bspw. in Assembler, da man nicht direkt auf die Register zugreifen kann.
so long..
Andy
Keywords: Visual Basic, VB6, XOR Swap Algorithm, XOR Swap Algorithmus, XOR, Exklusiv Oder, CopyMemory, RtlMoveMemory
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mad Andy“ ()