Einzelnen Beitrag anzeigen

to-wer

Registriert seit: 25. Mär 2007
29 Beiträge
 
#1

Operationen mit Bitstrukturen optimieren

  Alt 30. Okt 2017, 17:41
Hallo zusammen,

habe ein Programm geschrieben, welche aus einem Datenstrom einen anderen erzeugt, was auch läuft. Allerdings braucht es bei 60.000 zu konvertierenden Bytes ca. 30 Sekunden, was an meiner vielleicht umständlichen Programmierung liegt. Nun möchte ich es gerne etwas schneller machen.
Es gibt immer drei Bytes auszuwerten, in denen bestimmte Bit positive oder negative Schrittweiten darstellen.

Bit No, 7 6 5 4 3 2 1 0
Byte 1 y+1 y-1 y+9 y-9 x-9 x+9 x-1 x+1
Byte 2 y+3 y-3 y+27 y-27 x-27 x+27 x-3 x+3
Byte 3 ev1 ev2 y+81 y-81 x-81 x+81 set set

Momentan habe ich die drei Hex-Bytes mit HexToBins in Strings gewandelt.
Die Schrittweiten berechne ich mit
dx:= StrToInt(hs1[8])-StrToInt(hs1[7])+9*StrToInt(hs1[6])-9*StrToInt(hs1[5])+3*StrToInt(hs2[8])-3*StrToInt(hs2[7])+27*StrToInt(hs2[6])-27*StrToInt(hs2[5])+81*StrToInt(hs3[6])-81*StrToInt(hs3[5]);

dy:= StrToInt(hs1[1])-StrToInt(hs1[2])+9*StrToInt(hs1[3])-9*StrToInt(hs1[4])+3*StrToInt(hs2[1])-3*StrToInt(hs2[2])+27*StrToInt(hs2[3])-27*StrToInt(hs2[4])+81*StrToInt(hs3[3])-81*StrToInt(hs3[4]);

Nutze das Bit also als Multiplikator in einem Term aus den verschiedenen Summanden.
Letztendlich habe ich auch schon die Formel jeweils durch feste Zuweisungen ersetzt, um zu sehen, wo der Flaschenhals ist. Viel hat es nicht gebracht - unter 10%.
Hat jemand eventuell eine Idee? Wenn nicht, ist auch nicht so schlimm. Dann wartet man eben.

Vielen Dank
Torsten
  Mit Zitat antworten Zitat