![]() |
AW: Schnelle SwapByte Routine - Bits swappen
![]() |
AW: Schnelle SwapByte Routine - Bits swappen
Zitat:
Kann durchwegs sein, mal sehen wie sich das auf die Laufzeit / generierten Code auswirkt. Habe dieses Uralt-Beispiel heute mal meinem jungen Mitarbeiter (IT Azubi und zudem Sohn) gezeigt, als Antwort auf die Frage, wozu Case eigentlich gut sei .... |
AW: Schnelle SwapByte Routine - Bits swappen
Beim Case wird jeder einzelne Wert verglichen, bis etwas getroffen wird.
Beim Array wird der Eingabewert direkt als Index/Offset verwendet. |
AW: Schnelle SwapByte Routine - Bits swappen
Zitat:
Da gibts dann auch keinen so großen Unterschied zu einem direkten Zugriff auf ein Array. Wobei der direkte Zugriff sicherlich immernoch ein Stückchen schneller (und in meinen Augen) schöner zu lesen ist als das gigantische case-of. Notwendig ist ein case-of nicht, aber für Aufzählungswerte oder oft auch für Zahlenwerte ist es manchmal eine etwas übersichtlichere Alternative zu einer endlosen if-then-else Verkettung. |
AW: Schnelle SwapByte Routine - Bits swappen
Hätte noch etwas vermutlich ganz schnelles:
Code:
MOVZX AX, BYTE PTR[a]
RCR AL,1 RCL AH,1 RCR AL,1 RCL AH,1 RCR AL,1 RCL AH,1 RCR AL,1 RCL AH,1 RCR AL,1 RCL AH,1 RCR AL,1 RCL AH,1 RCR AL,1 RCL AH,1 RCR AL,1 RCL AH,1 MOV BYTE PTR[a],AH |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz