我正在编写一个C ++库,其中我使用的函数在Eigen3中作为参数表达模板。基本上我的函数的定义类似于
template <typename T>
/* return type */ f(Eigen::MatrixBase<T> param)
{
// function body
}
输入参数初看起来有点奇怪,但它真正做的是它允许使用表达式模板。例如,我可以使用像
这样的功能f(A * B + C * D * F)
上述参数的类型是一些非常非常长的拼写模板类型(表达式模板),而不是普通矩阵。这样的表达式模板允许速度优化等,所以我真的需要使用它们。
现在来了我的问题:
我有很多这些函数,每当我用不同的表达式实例化它们时,编译器会在编译时生成实例化,因此编译时间会变得更大。在我的情况下,它仍然相当不错,在i5 8GB RAM上大约30秒,但是我非常希望减少编译时间。有什么方法或任何技巧我可以用来以某种方式减少编译时间但仍然能够使用表达模板?