Indianer konvertieren



  • Hi zusammen,

    unter der WinAPI gibts ja ein paar Funktionen, um das Byte-Order von 2/4 Byte Werten zu ändern (ntohl() bzw. ntohs()).
    Ich brauch eine Methode, die möglichst performant ist, weil sie sehr oft ausgeführt wird. Kann ich davon ausgehen, dass die Fkt. in der WinAPI optimiert sind? Oder soll ich mir meinen eigenen Algorithmus ausdenken (jetzt auf anhieb würde ich es mit dem << Operator machen, oder was schlägt ihr vor?)

    Danke & Gruß,

    Mark


  • Mod

    Ich würde meinen das eine inline Funktion mit entsprechenden shift operatoren am schnellsten ist, da kann der Compiler sich am Besten beim Optimieren austoben.



  • Ich würde dazu am ehesten die MMX/SSE/SSE2 Instructions durchwühlen ob da nicht was passendes dabei ist.
    Kommt natürlich drauf an wie die Werte im Speicher stehen, aber wenn die alle direkt hintereinander im Speicher liegen sollte MMX/SSE/SSE2 schon was bringen.

    Wenn nicht gibt's IIRC einen asm Befehl mit dem man alle 4 Bytes eines Registers auf einmal flippen kann... weiss aber nimmer wie der heisst.



  • Mach doch einfach ein paar Zeitmessungen und vergleiche dann die Werte.


Log in to reply