AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Achtung. Optimierung beim Compiler

Ein Thema von DelTurbo · begonnen am 8. Jun 2010 · letzter Beitrag vom 11. Jun 2010
Antwort Antwort
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#1

AW: Achtung. Optimierung beim Compiler

  Alt 8. Jun 2010, 22:05
Soweit ich das noch weiß, optimiert der Compiler das dahingehend, da die CPU scheinbar leichter und schneller um 1 dekrementieren als inkrementieren kann.
Nein, der Compiler optimiert die Schleife so, dass sie nicht von n..m, sondern von (n-m-1)..0 läuft. Da bei Operationen wie Inc- und Dekrementieren bereits das Zero-Flag gesetzt wird, wenn der Wert 0 wird, erspart man sich einen Vergleich pro Schleifendurchlauf.

Aber einen Unterscheid sollte in deinem Programm nicht auftreten. Beim Debuggen findet du lediglich die "falschen" Werte, intern wird aber alles richtig ausgeführt.
Ja, der Zugriff auf InUse[i] erfolgt in der richtigen Reihenfolge. Der Compiler speichert sich den Zeiger auf InUse[0], und inkrementiert diesen bei jedem Schleifendurchlauf, während der Index dekrementiert wird. Läuft insgesamt schneller, und das Array wird in der korrekten Reihenfolge abgearbeitet.

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Achtung. Optimierung beim Compiler

  Alt 9. Jun 2010, 06:47
Hallo,

was mich eh interessiert.
Wieso hast du beim Debuggen die Optimierung angeschaltet ?


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Achtung. Optimierung beim Compiler

  Alt 9. Jun 2010, 07:14
Wahrscheinlich, weil sie bei den Projektoptionen standardmäßig an ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Achtung. Optimierung beim Compiler

  Alt 9. Jun 2010, 07:39
Über einige standardmäßige Sachen hatte ich mich ja schonmal beschwert.
- wenn standardmäßig auch noch Bereichsprüfungen, Überlaufprüfungen und Dergleichen aktiviert wären, dann gäbe es diesbezüglich wohl auch weniger Probleme bezüglich 0- und 1-Index, sowie Length()-1 usw.


Fakt ist einfach, daß man dem Debugger vergessen hat mitzuteilen, daß z.B. die Reihenfolge umzudrehen ist, bzw. daß der interne Wert anders interpretiert werden muß.

Bei Verwendung dieses Index wird er aber "richtig" angewand.
Sei es durch:

Delphi-Quellcode:
// dieses
for i := 0 to 10 do
  x := a[i];

// als
i := 10;
repeat
  x := a[10-i];
  Dec(i);
until {i = 0} ZeroFlag;

// oder

i := 10;
p := @a[0]
repeat
  x := p^;
  Inc(p);
  Dec(i);
until {i = 0} ZeroFlag;

// oder (es gibt noch unzählige Möglichkeiten
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 9. Jun 2010 um 07:44 Uhr)
  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 07:10 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