繁体   English   中英

GCC 预处理器不工作? 带或不带注释的大文件的编译时间

[英]GCC preprocessor not working? Compile time of large files with or without comments

我怀疑 gcc 预处理器工作不正常,因为编译时间有或没有注释以及有或没有优化存在莫名其妙的相关性。

我有一个巨大的 Matlab 生成的 c 文件(大约 70.000 行)。

我注意到当我使用优化级别 -O3 编译它时,编译时间超过 30 分钟。 关闭优化 (-O0) 时只需要 4 分钟。 这正是我所期望的,因为对大文件进行优化可能很复杂。

但是,如果我在没有注释的情况下在 Matlab 中生成相同的文件(或使用编辑器删除它们),它会在 16 分钟内编译,在没有优化的情况下编译 2 分钟。

因子 2 从何而来? 我希望优化是在预处理之后完成的,预处理应该删除任何注释。 这将导致独立于 o-level 的固定时间差异。 我糊涂了。

我试图显示预处理的输出(使用 gcc 选项 -E)并且没有注释。 如果我另外使用选项 -C 有注释。

如果我删除空行和连续空格,它也会影响编译时间。 编译时间似乎是线性文件大小取决于...

我找到了原因:

有人(在项目的早期阶段)打开了选项“-Wa,-amhls”,这会导致汇编器从 .S 和 .C 输入文件生成一个 > 500.000 行长的组合 .lst 文件。

在 Windows 机器上构建该文件需要 30 多分钟。 (Linux 快得多!)

这也是为什么构建时间取决于优化和评论打开/关闭的原因。 两者都会影响 .lst 文件的长度。

关闭该选项后,我的项目可以在不到 3 分钟的时间内构建完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM