如何在c中查看优化代码

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

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

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

提前致谢。

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

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

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

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

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

如果您的目标只是了解优化,请尝试维基百科上的程序优化和编译器优化以获取一些一般信息。

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

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