c++ - 我如何分析完整的 C++ 构建?

标签 c++ eclipse makefile profiling build-process

我正在 Windows XP 上用 C++ 开发一个应用程序,使用 Eclipse 作为我的 IDE,以及一个基于 Makefile 的构建系统(使用自定义工具来生成 Makefile)。此外,我正在使用 LZZ,它允许我编写一个文件,然后将其拆分为一个头文件和一个实现文件。我正在使用 TDM 的 GCC 4 端口。

我可以使用哪些工具或技术来准确确定构建过程的每个部分需要多少时间,以及为什么它很慢?

特别感兴趣的是:

  • make 需要多少时间来解析 Makefile、找出依赖关系、检查时间戳等?
  • Eclipse 在构建前后需要多少时间?
  • GCC 在解析系统和提升 header 上花费了多少时间?

P.S.:这是我的家庭项目,所以昂贵的工具对我来说遥不可及,但如果它们特别相关,无论如何都可以记录在这里。

最佳答案

由于 Make 和 GCC 对他们正在做的事情非常冗长,获得花费时间的高级概览的一种非常粗略的方法是通过一个脚本将 make 的输出管道化,该脚本为每行加上时间戳:

make | perl -MTime::HiRes -pe "printf '%.5f ', Time::HiRes::time()"

(我正在使用 ActivePerl 来执行此操作,但据我所知,Strawberry Perl 现在可能是推荐的 Windows Perl 版本。)

根据您的喜好重新格式化或处理时间戳。

特别是要获取有关 GCC 的更多详细信息,请使用 --time-report 选项。

要了解 Eclipse 增加了多少开销,请使用秒表为 Eclipse 和命令行中的构建计时。

关于c++ - 我如何分析完整的 C++ 构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2149968/

相关文章:

java - VM 初始化期间发生错误,无法为对象堆保留足够的空间 - Spring Tool Suite?

java - GWT 出现奇怪的未捕获错误,UmbrellaException

linux/unix 和 makefile

c++ - Make 不生成调试符号

c++ - 使用 QtMobility 检测漫游(切换接入点)?

c++ - 将 vector 作为函数的引用传递

c++ - VC++ 类在新构建时失败,但在添加空格后神秘地构建

c++ - 无法使用 std=c++11 设置 Eclipse Juno C++

linux - 它会链接到哪个库 - 静态或共享对象

java - 自动为枚举添加类似 Java 枚举的功能