AGB  ·  Datenschutz  ·  Impressum  







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

Interessante Optimierung

Ein Thema von CalganX · begonnen am 5. Dez 2004 · letzter Beitrag vom 5. Dez 2004
Antwort Antwort
Seite 1 von 2  1 2      
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Interessante Optimierung

  Alt 5. Dez 2004, 18:11
Hi,
ich bin gerade ein wenig über die Compileroptimierung verwundert. Folgender Source (die mit * markierten Zeilen haben einen blauen Punkt von Delphi bekommen):
Delphi-Quellcode:
     repeat
{*}    frmSelectDrive.ShowModal;
{*}    FDrive := frmSelectDrive.DriveLetter;
{*}    FDatabaseFilename := FDrive + szDatabasePath;
{*}    FFilebase := FDrive + szFilebasePath;
{*}    if FileExists(FDatabaseFilename) then
         break;
{*}    case MessageDlg(szNoHDD060, mtError, [mbAbort, mbRetry], 0) of
         mrAbort:
           begin
{*}          Close;
             break; {<--}
           end;
       end;
   until false;
Die mit dem Pfeil markierte Zeile hat keinen Punkt, also könnte man sie doch eigentlich aus dem SourceCode rausnehmen, weil sie eigentlich ausgeführt wird. Wenn ich das aber machen, verfängt sich das Programm in der Endlosschleife (auch die Message-Box wird nicht immer angezeigt und das angezeigte Formular flackert).
Irgendwie optimiert der Compiler hier auf zwei verschiedene Art und Weisen. Aber wenn er die Zeile sowieso übergeht, dann ändert sie doch nichts, oder?

Chris
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Interessante Optimierung

  Alt 5. Dez 2004, 18:12
Hi,

wie sieht denn der Assemblercode der beiden Varianten aus? Da wird wohl der Unterschied liegen...

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Interessante Optimierung

  Alt 5. Dez 2004, 18:16
Hi,
jetzt musst du mir aber auf die Sprünge helfen. Wie zeige ich den an?

Chris
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Interessante Optimierung

  Alt 5. Dez 2004, 18:17
Zitat von Chakotay1308:
Hi,
jetzt musst du mir aber auf die Sprünge helfen. Wie zeige ich den an?

Chris
Haltepunkt setzen oder manuell Anhalten -> Strg + Alt + C (oder Ansicht -> Debug -> CPU)

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Interessante Optimierung

  Alt 5. Dez 2004, 18:23
Hi,
achso.

Mit break:
Code:
mov eax,esi
call TCustomForm.Close
lea edx,[ebp-$1c]
mov eax,$004c0e4c
Ohne break:
Code:
mov eax,esi
call TCustomForm.Close
[color=#ff0000]jmp $004c1993[/color]
lea edx,[ebp-$1c]
mov eax,$004c0e4c
Das heißt, es wird zwar wegoptimiert, aber trotzdem berücksichtigt? Das ist eben das, was ich nicht verstehe.

Chris
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Interessante Optimierung

  Alt 5. Dez 2004, 18:30
Hi,

also die Punkte am Rand bedeuten nicht, dass die Anweisung (nicht) übernommen wurde.
Wenn da keine Punkte auftauchen, heisst es für den Compiler, dass die Anweisung "keinen Sinn macht" (sie zeigen also grobe Fehler)
Sprachkonstrukte und Keywords werden auch nicht gezählt. *

mfG
mirage228

*: Hat mir Robert_G gerade im Chat erzählt
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#7

Re: Interessante Optimierung

  Alt 5. Dez 2004, 18:34
Mit grobe Fehler meinte ich Statements, die keinen Sinn machen. (Nach einer Minute schon alles verdreht. )
also:
Delphi-Quellcode:
  a := 1;// das macht keinen Sinn
  a := 2; //Es wird ja komplett von der zeile ersetzt
Eigentlich sollen sie dir nur zeigen, wo du einen funktionierenden Breakpoint setzen kannst.
Ein Breakpoint bei Break macht wohl nicht viel Sinn.
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Interessante Optimierung

  Alt 5. Dez 2004, 18:36
Hi,
achso... ich dachte eigentlich, dass es sich bei den Punkten nur um übernommene Anweisungen handelt.

Na gut. Wieder was gelernt.
Danke,
Chris
  Mit Zitat antworten Zitat
moritz

Registriert seit: 18. Apr 2003
1.037 Beiträge
 
#9

Re: Interessante Optimierung

  Alt 5. Dez 2004, 18:36
Mal eine Frage: Ich kenn diese Optimierung gar nicht Ich kenn nur die Warnungen à la "Auf * zugewiesener Wert wird nicht benutzt". Oder ist das neu in D8 / D2005?

"Optimistisch ist diejenige Weltanschauung, die das Sein höher als das Nichts stellt und so die Welt und das Leben als etwas an sich Wertvolles bejaht."
Albert Schweitzer
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#10

Re: Interessante Optimierung

  Alt 5. Dez 2004, 18:39
Achte mal in deinem D7 auf diese blauen Pünktchen neben dem Code Editor.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz