wie man den optimierten Code in c sieht

8

Ich kann die Optimierung mit Profiler, Größe der ausführbaren Datei und Zeit für die Ausführung untersuchen.

Ich kann das Ergebnis der Optimierung erhalten. Aber ich habe diese Fragen,

  • So erhalten Sie den optimierten C-Code.
  • Welcher Algorithmus oder welche Methode wird von C verwendet, um einen Code zu optimieren?

Vielen Dank im Voraus.

    
sganesh 06.03.2010, 05:27
quelle

5 Antworten

11

Sie können sich eine Vorstellung von der Optimierung machen, indem Sie die Option -fdump-tree-optimized mit gcc verwenden. und Sie erhalten eine optimierte Datei. Sie können den Code nicht ausführen, aber mit diesem können Sie sich eine Vorstellung von der Optimierung machen. Vergessen Sie nicht, -O2 oder -O3 oder ein anderes Level einzuschließen.

    
abubacker 06.03.2010, 05:49
quelle
8

Normalerweise wird der Code nicht als C optimiert. Normalerweise werden Optimierungspässe durchgeführt, lange nachdem das C in eine Form von Zwischendarstellung umgewandelt wurde, mit der ein Compiler leichter im Speicher arbeiten kann. Daher ist eine direkte Antwort auf Ihre Frage, dass der optimierte C-Code nie existiert.

    
Billy ONeal 06.03.2010 05:31
quelle
7

Ein C-Compiler produziert in der Regel zu keiner Zeit optimiertes C. Stattdessen wandelt der Compiler C in eine vereinfachte interne Repräsentation um, und die meisten Compileroptimierungen werden auf einer oder mehreren dieser Zwischendarstellungen . Dann generiert der Compiler eine Assembly oder eine Binärdatei daraus.

Am ehesten ist es wahrscheinlich, eine Datei ohne Optimierung und erneut mit höchster Optimierung zu Assembly zu kompilieren und dann die Assembly-Ausgabe zu vergleichen. Sie müssen die Assemblersprache gut verstehen, um das zu tun. Wenn Sie gcc verwenden, lesen Sie über die -S- und -O-Schalter, wie Sie dies tun (oder nicht tun).

Wenn Sie schneller Code schreiben möchten, sollten Sie besser C schreiben, indem Sie bessere Algorithmen und Datenstrukturen auf C-Ebene verwenden, indem Sie den Profiler sorgfältig verwenden.

Wenn Ihr Ziel nur darin besteht, die Optimierung zu verstehen, versuchen Sie Programmoptimierung und Compiler-Optimierung auf Wikipedia für einige allgemeine Informationen.

    
Jesse Millikan 06.03.2010 05:32
quelle
2

Wenn Sie GCC verwenden, verwenden Sie ein Argument, um den Code zu optimieren, und verwenden Sie --save-temps als Argument. Jeder, der C-Code sagt, ist nicht optimiert, wenn C mit GCC kompiliert wird. Schreiben Sie einen rekursiven Fibonacci-Sequenzgenerator in C und lesen Sie den vorverarbeiteten Code durch. Das oben erwähnte Argument speichert auch die generierte Assembly in dem Verzeichnis, aus dem GCC aufgerufen wird. Wenn Sie mit der Intel-Syntax-Assemblierung vertrauter sind, sollten Sie auch -masm = intel als Argument verwenden.

    
Anonymous 06.03.2010 06:39
quelle
-2

Wenn Sie Assembler verstehen, können Sie den vom Assembler generierten Code anhand des Compilers überprüfen.

    
uray 06.03.2010 05:36
quelle

Tags und Links