gcc中的预处理时间(测量方法)



是否有一种方法可以测量预处理器执行步骤所花费的时间?或者这只是简单的计算代码行(更多的代码行->预处理所需的时间更长)?

从Custom gcc预处理器和使用时间,您可以围绕cc1:编写以下包装器

#!/bin/sh
echo "cc1 $*" >&2
time $(${COLLECT_GCC} --print-prog-name=cc1) "$@"

包装器输出带有参数和所用时间的cc1命令:

$ gcc -no-integrated-cpp -B$PWD 1.c
cc1 -E -quiet 1.c -mtune=generic -march=x86-64 -o /tmp/cckqYvRJ.i
real    0m0.014s
user    0m0.009s
sys 0m0.005s
cc1 -fpreprocessed /tmp/cckqYvRJ.i -quiet -dumpdir a- -dumpbase 1.c -dumpbase-ext .c -mtune=generic -march=x86-64 -o /tmp/ccePvbYm.s
real    0m0.021s
user    0m0.015s
sys 0m0.006s

cc1 -E ..以下的时间是预处理器所花费的时间。

如果你指的是分别测量每个翻译阶段所花费的时间,那么不,这是不可能的。阶段未完成";单独地"-所有这些都是由一个程序同时混合完成的。最终结果是";就好像";这些阶段将一个接一个地进行。从链接来看,重点挖掘:

编译器处理C源文件,就好像按照这个确切的顺序发生以下阶段一样。只要行为相同,实际实现可以将这些操作组合起来或以不同的方式处理它们

最新更新