根据我的理解,创建具有多个编译单元的程序的主要好处是组件的可重用性和合并小更改时的编译时间更短。
我还认为(可能是错误的)与此相关的惩罚是,在它们自己的编译单元中定义的函数不能声明为“内联”。
[我认识到这个关键字实际上并不强制编译器内联扩展函数,但我的理解是它为编译器提供了更大的优化灵活性,因此值得尽可能包括在内。]
到目前为止,一切都很好?
我真正的问题是,当程序解决复杂的建模问题时,成本/收益分析是否仍然有利于多个编译单元,并且需要在集群上迭代其主循环数月才能生成有用的输出。
假设一个多编译单元程序需要几分钟来编译,而重新配置为单个编译单元的同一程序需要几个小时来编译......如果单个编译单元将所有函数声明为内联,从而提供更多优化机会,对我来说,期望执行时间可以减少几个百分点似乎是合理的,而不是弥补额外的编译时间。
对于这种情况,是否有好的经验法则,或者它是否严重依赖于情况?