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
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.245 Beiträge
 
Delphi 2007 Architect
 
#1

AW: Achtung. Optimierung beim Compiler

  Alt 9. Jun 2010, 09:44
Grund ist dass sehr einfach auf "=0" geprüft werden kann. ein "=100?" läuft also auf ein "x-100=0?" 'raus
Ne, das ist so nicht richtig. Wie ich oben schrieb braucht es ein cmp (Assembler) weniger. Richtig rum sähe das so aus

mov [register+?],0 // Startwert
schleife:
inc [register+?] // Wert einen hochzählen
cmp [register+?],$5a // Vergleichen ob MAX erreicht ist.
jne schleife

nach der Optimierung sieht es so aus

mov [register+?],$5a // MAX Wert
schleife:
dec [register+?] // Einen vom MAX abziehen
jnz schleife // Wenn nicht 0 dann weiter

Das ist extra so "platt" geschrieben das auch leute die kein Assembler können es verstehen sollten.

Gruss

PS.: Danke, das mit dem {O+} und {O-} werde ich mir merken.

EDIT: Ich weiss nicht was ihr mit Debugger meint. Ich meine das CPU-Fenster. Da sieht man wirklich was abgeht.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!

Geändert von DelTurbo ( 9. Jun 2010 um 09:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Achtung. Optimierung beim Compiler

  Alt 9. Jun 2010, 09:56
PS.: Danke, das mit dem {O+} und {O-} werde ich mir merken.
Oder sieh dich mal in den Projektoptionen um. :

EDIT: Ich weiss nicht was ihr mit Debugger meint. Ich meine das CPU-Fenster. Da sieht man wirklich was abgeht.
Rate mal, wer dir Zugang zu diesem Fenster gewährt?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.245 Beiträge
 
Delphi 2007 Architect
 
#3

AW: Achtung. Optimierung beim Compiler

  Alt 9. Jun 2010, 10:06
Jo,

in den Projektoptionen habe ich das ja ausgemacht nachdem ich den salat gesehen habe. Es geht nur darum das man es dort z.b. Generell ausmacht und einzelne Proceduren optimiert. Oder halt andersrum.

Steht aber so auch in meinem ersten post.

Zitat:
Gibt es flags/parameter womit man teile des programms von der optimierung ausschliessen kann?
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Achtung. Optimierung beim Compiler

  Alt 9. Jun 2010, 10:19
Die Frage war eben ob es überhaupt notwendig ist an der Stelle die Optimierung abzuschalten. Denn wie bereits erwähnt wurde sollte sich die Optimierung nicht derart auswirken das eine falsche Logic entsteht.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.245 Beiträge
 
Delphi 2007 Architect
 
#5

AW: Achtung. Optimierung beim Compiler

  Alt 9. Jun 2010, 10:44
Denn wie bereits erwähnt wurde sollte sich die Optimierung nicht derart auswirken das eine falsche Logic entsteht.
Macht es aber....
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Achtung. Optimierung beim Compiler

  Alt 9. Jun 2010, 10:46
Dann kannst du ja den Bug melden, und wenn du Glück hast, wird der Fehler dann in Delphi 2012 behoben [/Zynismus]
  Mit Zitat antworten Zitat
blauweiss

Registriert seit: 19. Jun 2007
142 Beiträge
 
#7

AW: Achtung. Optimierung beim Compiler

  Alt 9. Jun 2010, 11:15
Denn wie bereits erwähnt wurde sollte sich die Optimierung nicht derart auswirken das eine falsche Logic entsteht.
Macht es aber....
Ich traue mich einfach wetten, daß nicht.
DelTurbo, schau bitte nochmal genau hin. Leider gibt es dazu x Threads, wo das gleiche gemeldet+widerlegt wurde, und nicht ein Thread, wo es dann tatsächlich so war.

Nichtsdestotrotz ist diese Schleifen-Runterzähl-"Optimierung" m.E. weitgehend sinnlos. Performance geht tatsächlich verloren durch schlechtes Algorithmendesign oder Peripheriezugriffe, während ein gesparter Assemblerbefehl pro Durchlauf in einer Schleife zu 99.9999999% marginal ist.

blauweiss
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.749 Beiträge
 
Delphi 2007 Professional
 
#8

AW: Achtung. Optimierung beim Compiler

  Alt 9. Jun 2010, 12:15
Denn wie bereits erwähnt wurde sollte sich die Optimierung nicht derart auswirken das eine falsche Logic entsteht.
Macht es aber....
Wie wäre es, wenn du mal ein kleines Beispielprogrämmchen bastelst, dass das mutmaßliche Fehlverhalten nachvollziehbar aufzeigt (und nicht nur im Debugger!)?
Uli Gerhardt
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.245 Beiträge
 
Delphi 2007 Architect
 
#9

AW: Achtung. Optimierung beim Compiler

  Alt 10. Jun 2010, 15:53
Wie wäre es, wenn du mal ein kleines Beispielprogrämmchen bastelst, dass das mutmaßliche Fehlverhalten nachvollziehbar aufzeigt (und nicht nur im Debugger!)?
Einfach mal den ersten beitrag lesen. Sobald es zu einer ausgabe kommt rennt die schleife richtigrum. Soll ich hier screenshots anhängen oder was?

@blauweiss, ich merke schon Assembler ist nicht deine Welt. Ich denke mal das du nicht weisst wieviel Taktzyklen in einer grossen schleife verloren gehen, oder überhaupt weisst was schneller ist. Ein MOV AX,0 oder ein XOR AX,AX.

Ausserdem wollte ich keine diskusuion über Assembler lostreten. Ich wollte das nur mitteilen damit andere nicht den gleichen "fehler" suchen.
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Achtung. Optimierung beim Compiler

  Alt 9. Jun 2010, 10:53
Hab noch nie mitbekommen, daß es dadurch Probleme gibt.

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

var
  i: Integer;
  InUse: Array[0..20] of Boolean;
  Sr, S: String;
begin
  for i := 0 to 20 do
    InUse[i] := Boolean(Random(2));
  Sr := '';
  for i := 0 to 20 do begin
    // zählt problemlos rückwärts
    if not InUse[i] then Sr := Sr + 'jelse Sr := Sr + 'n';
  end;
  S := '';
  for i := 0 to 20 do begin
    WriteLn(i);
    if not InUse[i] then S := S + 'jelse S := S + 'n';
  end;
  WriteLn(Sr);
  WriteLn(S);
end.
Ein Therapeut entspricht 1024 Gigapeut.
  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 16:50 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