跟踪gcc编译和什么代码减慢它

时间:2012-12-14 13:07:16

标签: c++ linux gcc

我想找出哪些代码会导致gcc编译时间变慢。我以前有一个代码正在缓慢编译,有人告诉我命令行开关,使gcc打印它编译的每一步,包括每个函数/变量/符号等。这有很大的帮助(我可以在控制台中看到gcc chokes),但我忘记了切换是什么。

3 个答案:

答案 0 :(得分:22)

我找到了它(来自gcc man page):

  

-Q

     

使编译器在编译时打印出每个函数名称,并在完成时打印有关每个函数的一些统计信息。

答案 1 :(得分:4)

另见this answer一个非常相似的问题。

您可能希望invoke GCC -time或更多可能-ftime-report,这会为您提供cc1cc1plus所花费的时间......(编译器由gccg++命令启动,显示在GCC编译器的每个内部阶段或通过中花费的时间。

您将了解到,对于C程序,只要您要求进行一些优化,解析只是编译时间的一小部分,例如: -O1-O2。 (对于C ++来说,这不太正确,因为解析可能占用一半的时间,特别是因为模板扩展被认为是解析)。

根据经验,减慢GCC的速度是很长的功能体。最好有50个功能,每个1000行,而不是50000行的单个功能。

答案 2 :(得分:0)

尝试-v(详细)编译。

请看这个链接:

http://www.network-theory.co.uk/docs/gccintro/gccintro_75.html

编辑:

我明白。也许这会有所帮助:

gcc -fdump-tree-all -fdump-rtl-all

之类(-fdump-pass)。见这里:http://fizz.phys.dal.ca/~jordan/gcc-4.0.1/gcc/Debugging-Options.html