Autor Beitrag
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Mo 06.10.08 12:32 
Zitat:

3.:
ausblenden Delphi-Quelltext
1:
2:
      FL := 0;
      inc(FL,PSBox.SBox[0,LB.Byte[1]]);

solltest du ersetzen durch
ausblenden Delphi-Quelltext
1:
      FL := PSBox.SBox[0,LB.Byte[1]];					


falls das nicht schon der compiler wegoptimiert. ansonsten gebe ich dir recht, es kommt nicht nur auf die operationen an, sondern auch auf den datentyp und wie man mit ihm umgeht.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 06.10.08 15:07 
Das ist ja nicht nur diese Zeile, sondern der ganze Block:
user profile iconDevilFish hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
      FL := 0// 1 Zuweisung
      inc(FL,PSBox.SBox[0,LB.Byte[1]]); // 1 Zuweisung, 1 Addition
      inc(FL,PSBox.Sbox[1,LB.Byte[2]]); // 1 Zuweisung, 1 Addition
      FL := FL XOR PSBox.SBox[2,LB.Byte[3]];  // 1 Zuweisung, 1 xor
      inc(FL,PSBox.SBox[3,LB.Byte[4]]);  // 1 Zuweisung, 1 Addition
Das sind 5 Zuweisungen, 3 Additionen und 1 xor. Warum nicht:
ausblenden Delphi-Quelltext
1:
2:
      FL := (PSBox.SBox[0,LB.Byte[1]] + PSBox.Sbox[1,LB.Byte[2]]) XOR PSBox.SBox[2,LB.Byte[3]] 
        + PSBox.SBox[3,LB.Byte[4]];  // 1 Zuweisung, 2 Additionen, 1 xor
Wieviel Gewinn das bringt, hab ich mir nicht genauer angeschaut, aber so kann der Compiler die Zwischenergebnisse optimiert speichern und muss die nicht in die Variable packen und wieder herausholen. Inwiefern der Compiler den ursprünglichen Code selbst schon dahingehend optimiert weiß ich nicht.
DevilFish Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Mo 06.10.08 20:58 
Danke nochmals für die Tips. Ich hab das auch soweit umgesetzt, aber bringt nicht wirklich viel. (ist auch schlecht zu vergleichen wenn die Unterschiede marginal sind)

Ich bin so bei 15Mb/s - 16Mb/s Datenrate mit lesen und schreiben.
Zum vergleich im Leerlauf also ohne die Verschlüsselung komm ich so auf 20Mb/s - 22Mb/s.


Flamefire
Zitat:
außerdem solltest du versuchen, mit pointern statt array-indizes zu arbeiten


Ich bin erst seit 4 Wochen am programmieren und weiß was ein Pointer ist, aber ich weiß grad nicht wie ich das umsetzen soll. Das würde bedeuten 512 bzw 256*4 +18 Pointer zu haben die jeweils auf ein Element des Array zeigen (und selber nicht als Array deklariert sind). Wenn ich das richtig verstanden habe. Ich wäre über ne kleine Starthilfe erfreut :).