Ein C-Compiler produziert normalerweise in keiner Phase optimiertes C. Stattdessen wandelt der Compiler C in eine vereinfachte interne Darstellung um, und die meisten Compileroptimierungen werden unter one or more of those intermediate representations ausgeführt. Dann generiert der Compiler eine Assembly oder eine Binärdatei daraus.
Der nächste, den Sie erhalten können, ist wahrscheinlich eine Datei zu Assembly ohne Optimierung und erneut mit höchster Optimierung 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 es Ihr Ziel ist, schneller Code zu schreiben, dann ist Ihre beste Wette, bessere C zu schreiben, indem Sie bessere Algorithmen und Datenstrukturen auf C-Ebene verwenden, indem Sie den Profiler sorgfältig verwenden.
Wenn Ihr Ziel nur ist, Optimierung zu verstehen, versuchen Sie Program Optimization und Compiler Optimization auf Wikipedia für einige allgemeine Informationen.
Ja, ich kann den Assembler-Code mit dem Befehl objdump -s erhalten. und wir können Assembly-Code mit Hilfe von cc-S – sganesh
Aber wenn ich weiß, wie es ist, Optimierung zu tun, kann ich versuchen, meine eigene Optimierung implementieren – sganesh
Optimierung der tatsächlichen C ist so ziemlich nicht möglich, auf eine sinnvolle Weise zu tun. Die meisten Arten von statischen Analysealgorithmen sind so ausgelegt, dass sie an einer Form von "drei Adressen" -Code arbeiten, die bereits von einem Compiler übersetzt wurden. Algorithmen sind einfacher zu schreiben, wenn die Daten, auf denen sie arbeiten, einfacher sind. Fang mit dem "Drachenbuch" an und arbeite dich von dort aus hoch. (http://en.wikipedia.org/wiki/Dragon_Book_(computer_science)) –