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,
Vielen Dank im Voraus.
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.
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.
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.
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.
Tags und Links optimization c