我想找出哪些代码会导致gcc编译时间变慢。我以前有一个代码正在缓慢编译,有人告诉我命令行开关,使gcc打印它编译的每一步,包括每个函数/变量/符号等。这有很大的帮助(我可以在控制台中看到gcc chokes),但我忘记了切换是什么。
答案 0 :(得分:22)
我找到了它(来自gcc man page):
-Q
使编译器在编译时打印出每个函数名称,并在完成时打印有关每个函数的一些统计信息。
答案 1 :(得分:4)
另见this answer一个非常相似的问题。
您可能希望invoke GCC -time
或更多可能-ftime-report
,这会为您提供cc1
或cc1plus
所花费的时间......(编译器由gcc
或g++
命令启动,显示在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