Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Eine allgemeine Frage - für zwischendurch.

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
chrisjumper



Anmeldungsdatum: 12.02.2004
Beiträge: 104
Wohnort: Jülich

BeitragVerfasst am: 06. Dez 2004 11:01   Titel: Eine allgemeine Frage - für zwischendurch.

Hallo Helfer,

also es geht um folgendes: Also bevor man ein Programm Kompiliert und Verlinkt entfernt der Compiler "unerreichbaren Code" - das ist eine Tatsache die in einer Fachzeitschrift stand, also werde ich das mal glauben.

Vielmehr kann ich mir jetzt nicht vorstellen was das sein soll, und warum man sowas macht.. ist doch nur zusätzliche Arbeit.

Handelt es sich hier um Kommentare? Oder um Code der für eine andere "Prozessorstrucktur" vorgesehen ist? Oder um was anderes?

Mfg

Chris
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

heinrich



Anmeldungsdatum: 22.09.1999
Beiträge: 219
Wohnort: N49.137 E8.544

BeitragVerfasst am: 07. Dez 2004 3:40   Titel:

Das was da weg-optimiert werden kann, sind sicherlich Kommentare aber es kann auch nicht erreichbarer Quellcode sein. Schleifenkonstrukte sind sicher auch ein Ziel der Optimierungs-Engine des Compilers...

Ansonsten verweise ich mal auf Wikipedia: http://de.wikipedia.org/wiki/Compiler#Programmoptimierung_2
_________________
It just works.
 
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name

Warp
Gast





BeitragVerfasst am: 07. Dez 2004 3:54   Titel:

Das ist Code der einfach nicht gebraucht wird. Ensteht durch Programmierfehler. Uninitialisierte Variablen sind so ein Fall. Copyaufrufe auf uninitialisierte Variablen und alles was auf diese zugreift. Wenn man ein Programm schreibt in denen Konstrukte vorkommen die niemals gebraucht werden ist das 'dead code' (Toter Code).
Warum soll der Compiler die umsetzen? Das der Compiler das merkt und damit mehr Arbeit hat ist klar. Doch wenn der Programmierer richtig programmiert und sowas erst nicht macht dann bräuchte der Compiler sich nicht darum zu kümmern.
Achte mal darauf wenn du ein Programm kompilierst wie oft es da passiert das so etwas in der Art drin steht.
Code:
Uninitialized Variable in .........

Macht keinen Sinn diesen Code in Binär umzuwandeln weil der steht nutzlos im Programm herum und langweilt sich. Frisst auch noch Brot obwohl er nix macht.
Kommentare sind es nicht, weil das ist kein Code sondern reine Textanweisungen die den Compiler nicht interessieren.
 

Warp
Gast





BeitragVerfasst am: 07. Dez 2004 3:58   Titel:

Ach ja und das was Heinrich da geschrieben hat ist natürlich auch wichtig.
Sowohl die Optimierung als auch nur das zu schreiben was auch benutzt wird. Klingt logisch ist aber nicht immer überschaubar, deshalb passiert es leider sehr oft.
 

Udo Kanter
Gast





BeitragVerfasst am: 08. Dez 2004 16:58   Titel:

MMN versteht man unter "unerreichbaren Code" Codestücke die nie durchlaufen werden. Z.B.:

Code:

if ( true ) {
    a = x+1;
} else {
    // unreachable code
   for ( int i=0; i<100; i++ ) {
        ....
   }
}


oder

Code:

void test()
{
    return;
    // unreachable code
   for ( int i=0; i<100; i++ ) {
        ....
   }
}


Auf keinen Fall werden vom Compiler uninitialisierte Variablen entfernt! Gemeint sind hier wohl Variablen die definiert, aber nicht benutzt werden.

Code:

void test()
{
    int i;          // nichtinitialisierte Variable
    int j=0;

    if ( i==0 ) { // Gibt Ärger, Wert von i ist zufällig

    }

}



In obigem Beispiel könnte j vom Compiler entfernt werden, da j nicht verwendet wird.

Gruß
Udo
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy