如何在c中查看优化代码

时间:2010-03-06 05:27:10

标签: c optimization

我可以使用分析器,可执行文件的大小以及执行时间来检查优化。

我可以得到优化的结果。 但我有这些问题,

  • 如何获得优化的C代码。
  • C使用哪种算法或方法来优化代码。

提前致谢。

5 个答案:

答案 0 :(得分:12)

您可以使用选项-fdump-tree-optimized和gcc来了解优化。 你会得到一个优化的文件。您无法运行代码但使用它可以了解优化。不要忘记包括-O2-O3或其他级别。

答案 1 :(得分:8)

通常,代码不会被优化为C.通常,在将C转换为某种形式的中间表示形式之后很久就会完成优化传递,编译器在内存中更容易使用。因此,直接回答您的问题是优化的C代码永远不存在。

答案 2 :(得分:7)

C编译器通常不会在任何阶段生成优化的C.相反,编译器将C转换为简化的内部表示,并且大多数编译器优化将在one or more of those intermediate representations上完成。然后编译器从中生成程序集或二进制文件。

最接近的可能是将文件编译为汇编而没有优化,再次进行最高优化,然后比较汇编输出。你必须掌握汇编语言才能做到这一点。如果您使用gcc,请阅读有关-S和-O开关的信息,了解如何做(或不做)。

如果您的目标是编写更快的代码,那么,最好的办法是通过仔细使用分析器,在C级别使用更好的算法和数据结构来编写更好的C语言。

如果您的目标只是了解优化,请尝试维基百科上的Program OptimizationCompiler Optimization以获取一般信息。

答案 3 :(得分:3)

如果您正在使用GCC,请使用参数优化代码并使用--save-temps作为参数。当用GCC编译时,每个人都说C代码没有被优化为C在某种程度上是错误的。在C中编写一个递归的Fibonacci序列生成器,并读取预处理的代码。上述参数还将生成的程序集保存在GCC目录中。如果您对英特尔语法汇编感觉更舒服,也可以使用-masm = intel作为参数。

答案 4 :(得分:-2)

如果您了解汇编程序,则可以通过编译器检查汇编程序生成的代码。