Thema: Delphi Integer vs. byte

Einzelnen Beitrag anzeigen

Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#4
  Alt 17. Okt 2002, 10:12
Byte vs. Integer in Schleifen.

Hi Sebastian,

es bringt absolut keine Vorteile eine Byte-Schleifen-Variable gegenüber einer Integer-SV zu nutzen. Der Kompiler hat u.U. sogar mehr Arbeit. Simple Erklärung.

Der Kompiler übersetzt Schleifenvariablen in ein bis zwei Register (je nach dem, ob diese innerhalb der Schleife genutzt werden). Der Schleifenregister wird auf die Differenz zwischen Anfang und Ende der Schleife gesetzt und in das 32-Bit (Integer) Register ECX geschrieben. Dieses wird solange heruntergezählt, bis es 0 ist. Das zweite Register (i.a. DL, DX, oder EDX) wird von Anfangswert solange heraufgezählt, bis die Schleife beendet wurde.

Wie auch immer, ECX ist der Zähler, und dieser ist vom Typ Integer. Wenn ein Byte in ein 32-Bit Register geladen wird, so muss dieses vorher gelöscht werden, das ist auf modernen Rechnern eine Extraaufwand von 2 Taktzyklen.

Abschluss

Wenn Du die Routine in einer rechenintensiven Umgebung nutzt, dann nutze immer Integervariablen. Wenn die Routine "nur mal so" genutzt wird, dann empfehle ich das zu nutzen, was Dir während der Entwicklung Vorteile bringt.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat