我有自动生成的代码(约18,000行,基本上是一个数据包)和其他约2000行代码在C++项目中。该项目打开链接时间优化操作。/O2和快速代码优化。为了编译代码,VC++ 2008 express需要非常长的时间(大约1.5小时)。毕竟,它只有18000行,为什么编译器需要这么多时间?为什么VC++ 2008编译器在链接阶段花费太多时间?
对18,000码的一点解释。这是普通的C,甚至没有C++,它包括许多无包装的环,样品将是:
一个[0]指定.A1 = 0.1284; a [0] .a2 = 0.32186; a [0] .a3 = 0.48305; a [1] .a1 = 0.543; ..................
它基本上填充了一个复杂的结构。但我觉得编译器不那么复杂。
调试模式很快,只有Relase模式有这个问题。在我拥有18,000行代码之前,它们都很好。 (那时数据在外部位置)。然而,释放模式做了很多工作,将exe的大小从1,800kb减小到700kb。
此问题确实发生在链接阶段,因为所有的.obj文件都会生成。我怀疑链接时代码的产生,但无法弄清楚哪里错了。
微软连接器历来是废话。我不能代表当代人。但是你真的在问关于链接还是编译?你的问题的文本没有说清楚。 – 2009-08-04 22:01:34
@Neil,开启链接时间代码生成功能后,大多数优化都会延迟到链接时间,这会大大减少构建时间,使链接器成为重量级。此外,您对历史编译器的评论不受支持,实际上并无帮助。 – 2009-08-04 22:04:09
@liuliu:我不确定我能否在没有看到代码的情况下给出确切的答案。我希望别人可以。 – 2009-08-04 22:24:49