我有一个庞大的C ++解决方案。
当我改变一个类并编译时 在某些情况下,编译(和链接)需要很少的时间(不到一秒) 但在某些情况下需要很长时间(超过30秒)
我不明白为什么会这样。 性能的巨大差异表明可以采取一些措施来最大化编译器运行的次数。
有什么想法吗?
答案 0 :(得分:1)
假设您有一个班级A
,并在头文件中向其添加新数据成员。然后必须重新编译A
。如果B
包含A
作为成员,那么B
也必须重新编译。如果C
有成员B
,那么C
也必须重新编译,依此类推。 A
中的更改可以包含domino effect。一个看似很小的变化(向一个类添加一个新的数据成员)可能导致重新编译整个项目。
另一方面,如果您对实现源文件(A
)中*.cpp
的成员函数的实现进行了实质性更改,那么很可能只有A
必须重新编译,但没有别的。这可能非常快。
如果您想了解触发多米诺骨牌效应的原因以及没有触发多米诺骨牌效应的原因,我建议您阅读项目31:最小化文件之间的编译依赖 Effective C++和项目26-30 最小化编译时依赖性 Exceptional C++。
编译器没有神奇的设置可以快速编译。只有你理解和仔细编码才有帮助。