是否可以返回某种可以进一步使用和简化的表达式,而不是向量本身?
我有一个函数
Vector3<T> f(Vector3<T> const&, Vector3<T> const&);
,并将其应用到 g = f(a1, b1).cwiseProduct(t1) + f(a2, b2).cwiseProduct(t2)
形式的表达式中。我想知道这个是否可以优化。当 f
返回时,似乎没有必要创建向量。返回一个“表达式”可能会更有效,然后可以针对 g
的评估进行优化。
这也许应该是一条评论,但需要正确的格式。
Vector3 <T> g;
{
auto v1 = f (a1, b1).cwiseProduct (t1);
auto v2 = f (a2, b2).cwiseProduct (t2);
g = v1 + v2;
}
将使用更少的内存,因为
f
返回的临时对象可以更快地被丢弃。但是,在我看来,它有点笨拙。也许将其包装在一个函数中。
如果
f
和cwiseProduct
都生成新向量。那么我不知道可以做哪些进一步的优化。也许你应该告诉我们f
。