AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Schnelle SwapByte Routine - Bits swappen
Thema durchsuchen
Ansicht
Themen-Optionen

Schnelle SwapByte Routine - Bits swappen

Ein Thema von bytecook · begonnen am 23. Feb 2016 · letzter Beitrag vom 26. Feb 2016
Antwort Antwort
noisy_master

Registriert seit: 17. Jun 2009
Ort: Wolfenbüttel/Baddeckenstedt
263 Beiträge
 
Delphi XE5 Professional
 
#1

AW: Schnelle SwapByte Routine - Bits swappen

  Alt 23. Feb 2016, 11:55
Verstehe ich da was nicht richtig?

Result := (Value shl 4) or (Value shr 4); ????
Das verstehst du tatsächlich falsch: Du vertauscht nur die Nibbles, der TE hätte gerne das byte gespiegelt...
Dirk
  Mit Zitat antworten Zitat
noisy_master

Registriert seit: 17. Jun 2009
Ort: Wolfenbüttel/Baddeckenstedt
263 Beiträge
 
Delphi XE5 Professional
 
#2

AW: Schnelle SwapByte Routine - Bits swappen

  Alt 23. Feb 2016, 12:18
In richtig kurz hätte ich noch einen zu bieten:

b := ((b * $0202020202) and $010884422010) mod 1023;

dürfte aber wegen 64bit und modulo relativ langsam sein.

dann hätte ich noch den:

b := (((b and $aa) shr 1) + ((b and $55) shl 1));
b := (((b and $cc) shr 2) + ((b and $33) shl 2));
b := ((b shr 4) + (b shl 4));

ser sollte in Summe eigentlich recht schnell sein(natürlich nicht so schnell wie das Look-Up) und sollte auch recht speichersparend sein(okay, ich gebe es ja zu: ist auf nem PC nicht nötig, aber....)
Dirk
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.533 Beiträge
 
Delphi 12 Athens
 
#3

AW: Schnelle SwapByte Routine - Bits swappen

  Alt 23. Feb 2016, 12:33
Wirklich + und nicht or ?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von bytecook
bytecook

Registriert seit: 6. Aug 2010
Ort: Dornbirn
151 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Schnelle SwapByte Routine - Bits swappen

  Alt 23. Feb 2016, 13:47
Hi Leute, danke für die Rückmeldungen

sollte nicht die Case hier den höchsten Speed liefern? Mir ist klar, dass ich shiften kann, und das es semantisch "elegantere" Konstrukte gibt....
Peter
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Schnelle SwapByte Routine - Bits swappen

  Alt 23. Feb 2016, 13:49
Das Array ist wahrscheinlich noch schneller als das case, aber sonst ist alles was berechnet werden muss natürlich langsamer.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von bytecook
bytecook

Registriert seit: 6. Aug 2010
Ort: Dornbirn
151 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Schnelle SwapByte Routine - Bits swappen

  Alt 23. Feb 2016, 14:12
Das Array ist wahrscheinlich noch schneller als das case, aber sonst ist alles was berechnet werden muss natürlich langsamer.

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 ....
Peter
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.533 Beiträge
 
Delphi 12 Athens
 
#7

AW: Schnelle SwapByte Routine - Bits swappen

  Alt 23. Feb 2016, 14:37
Beim Case wird jeder einzelne Wert verglichen, bis etwas getroffen wird.
Beim Array wird der Eingabewert direkt als Index/Offset verwendet.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:20 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-2025 by Thomas Breitkreuz