【发布时间】:2008-09-22 13:27:25
【问题描述】:
我在我的应用程序中使用了一个自定义的 Matrix 类,并且我经常添加多个矩阵:
Matrix result = a + b + c + d; // a, b, c and d are also Matrices
但是,这会为每个加法运算创建一个中间矩阵。由于这是简单的加法,因此可以通过一次添加所有 4 个矩阵的元素来避免中间对象并创建结果。我怎样才能做到这一点?
注意:我知道我可以定义多个函数,例如 Add3Matrices(a, b, c)、Add4Matrices(a, b, c, d) 等,但我想保持 result = a + b + c + d 的优雅。
【问题讨论】:
-
Ian G 的反应非常好,但需要考虑的是为什么要避免创建临时对象?开销很小,GC 会毫无问题地收集它们。 (是的,不这样做效率更高,但生成的代码的可维护性如何?)