C++ c++;g++;llvm clang编译器评测
注意,我的问题不是:如何告诉我的编译器编译时使用profiling on 我想分析我的编译过程。对于每个文件,我想知道在程序的每一行上花费了多少时间 我在做一个项目,有些文件有很长的编译时间,我想知道为什么 使用g++或llvm-clang是否可以做到这一点 谢谢 -v-ftime报告的输出(它是什么意思) 在下文中,“解析器”或“扩展”是模板的使用吗C++ c++;g++;llvm clang编译器评测,c++,g++,clang,C++,G++,Clang,注意,我的问题不是:如何告诉我的编译器编译时使用profiling on 我想分析我的编译过程。对于每个文件,我想知道在程序的每一行上花费了多少时间 我在做一个项目,有些文件有很长的编译时间,我想知道为什么 使用g++或llvm-clang是否可以做到这一点 谢谢 -v-ftime报告的输出(它是什么意思) 在下文中,“解析器”或“扩展”是模板的使用吗 Execution times (seconds) callgraph construction: 0.06 ( 2%) usr 0
Execution times (seconds)
callgraph construction: 0.06 ( 2%) usr 0.00 ( 0%) sys 0.09 ( 2%) wall 3181 kB ( 1%) ggc
callgraph optimization: 0.05 ( 2%) usr 0.00 ( 0%) sys 0.05 ( 1%) wall 5243 kB ( 2%) ggc
cfg cleanup : 0.02 ( 1%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 11 kB ( 0%) ggc
df live regs : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc
df reg dead/unused notes: 0.03 ( 1%) usr 0.00 ( 0%) sys 0.03 ( 1%) wall 1993 kB ( 1%) ggc
register information : 0.04 ( 1%) usr 0.00 ( 0%) sys 0.04 ( 1%) wall 0 kB ( 0%) ggc
alias analysis : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 450 kB ( 0%) ggc
rebuild jump labels : 0.03 ( 1%) usr 0.00 ( 0%) sys 0.03 ( 1%) wall 0 kB ( 0%) ggc
preprocessing : 0.12 ( 4%) usr 0.06 (12%) sys 1.46 (27%) wall 2752 kB ( 1%) ggc
parser : 0.67 (21%) usr 0.15 (29%) sys 0.89 (16%) wall 91749 kB (36%) ggc
name lookup : 0.15 ( 5%) usr 0.12 (24%) sys 0.24 ( 4%) wall 14384 kB ( 6%) ggc
inline heuristics : 0.03 ( 1%) usr 0.00 ( 0%) sys 0.03 ( 1%) wall 0 kB ( 0%) ggc
tree gimplify : 0.06 ( 2%) usr 0.01 ( 2%) sys 0.09 ( 2%) wall 15992 kB ( 6%) ggc
tree eh : 0.02 ( 1%) usr 0.01 ( 2%) sys 0.03 ( 1%) wall 4405 kB ( 2%) ggc
tree CFG construction : 0.01 ( 0%) usr 0.01 ( 2%) sys 0.03 ( 1%) wall 6636 kB ( 3%) ggc
tree CFG cleanup : 0.02 ( 1%) usr 0.01 ( 2%) sys 0.02 ( 0%) wall 15 kB ( 0%) ggc
tree find ref. vars : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall 1870 kB ( 1%) ggc
tree SSA rewrite : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 2357 kB ( 1%) ggc
tree SSA other : 0.00 ( 0%) usr 0.01 ( 2%) sys 0.00 ( 0%) wall 37 kB ( 0%) ggc
tree operand scan : 0.01 ( 0%) usr 0.04 ( 8%) sys 0.06 ( 1%) wall 6340 kB ( 2%) ggc
tree SSA to normal : 0.05 ( 2%) usr 0.00 ( 0%) sys 0.05 ( 1%) wall 95 kB ( 0%) ggc
dominance computation : 0.04 ( 1%) usr 0.00 ( 0%) sys 0.04 ( 1%) wall 0 kB ( 0%) ggc
expand : 0.60 (18%) usr 0.03 ( 6%) sys 0.71 (13%) wall 45557 kB (18%) ggc
varconst : 0.02 ( 1%) usr 0.00 ( 0%) sys 0.02 ( 0%) wall 3532 kB ( 1%) ggc
jump : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall 1745 kB ( 1%) ggc
mode switching : 0.01 ( 0%) usr 0.00 ( 0%) sys 0.01 ( 0%) wall 0 kB ( 0%) ggc
integrated RA : 0.35 (11%) usr 0.00 ( 0%) sys 0.35 ( 6%) wall 5259 kB ( 2%) ggc
reload : 0.29 ( 9%) usr 0.01 ( 2%) sys 0.31 ( 6%) wall 6490 kB ( 3%) ggc
thread pro- & epilogue: 0.10 ( 3%) usr 0.01 ( 2%) sys 0.13 ( 2%) wall 4832 kB ( 2%) ggc
final : 0.19 ( 6%) usr 0.01 ( 2%) sys 0.21 ( 4%) wall 2985 kB ( 1%) ggc
symout : 0.25 ( 8%) usr 0.01 ( 2%) sys 0.26 ( 5%) wall 27322 kB (11%) ggc
TOTAL : 3.25 0.51 5.49 256741 kB
使用g尝试这些命令行选项++ -v-ftime报告
这将为您提供有关编译过程的更多信息。罪魁祸首通常是模板。对于预处理行,建议: “0.12(4%)usr 0.06(12%)sys 1.46(27%)墙”-这句话说,预处理是在CPU本身(0.12)上做一些小的工作,但它使用的系统调用相当重(0.06或用户CPU时间的50%),大部分时间不是浪费在CPU上(1.46实时>>0.18秒CPU时间)。所以,这段时间被浪费在等待I/O操作或在繁忙的系统上等待CPU上。这是机器上唯一运行的程序吗 对于I/O,您可以这样做:将noatime添加到fs以降低I/O需求的数量,购买更快的HDD(就较低的寻道时间或较高的IO速率而言),将叮当声源移动到SSD甚至RAM驱动器(环路设备)。你不能进行碎片整理,因为它是linux
要了解eash pass的含义,请使用这是您所能获得的最佳答案。不可能看到单个C++行的时间,但这里可以看到问题是预处理器、解析器还是其他编译器步骤。您的文件只花了3.25秒就完成了编译。作为最后一种手段,您可以对内容进行注释,以找出最耗时的内容。有关行的含义:关于RTL的gcc演示文稿的简短介绍