我有一个科学计算类项目,核心算法是使用模板编程设计的。在顶层,它看起来像是一个基于配置的函数链调用汇集外观类的主要类型并创建该类的实例。有几个,比方说,6个参数,产生大约36个类的变体。正如您已经可以理解的那样,需要20-30分钟(Core-i7和装载内存到100%,8 GB)的大量时间才能在普通PC上进行编译。这就是为什么我需要在开发过程中将所有参数设置为一个值(6个变量)然后它是可以忍受的。
问题是如何在没有任何实质性入侵的情况下修复它?你认为预编译每个标题会有帮助吗?
答案 0 :(得分:0)
这里可能没有快速解决方案,但是您可以对代码库进行一些更改,这些更改将会有很大帮助。
确保您只在一个源文件中进行实例化而不是多个。如果您说整个项目需要20分钟编译或一个源文件,我无法从您的问题中看出来。
确保所有参数实际上是独立的。是否可以直接或通过将一个参数映射到另一个参数的另一个模板类从另一个模型中推断出来?
添加“模板间接”级别,其中一个类没有所有参数。相反,它有一个或两个模板类型,每个模板类型指示行为的一部分,这些类型只在源文件中实例化一次。