我正在尝试将向量(1 行,4 列)与矩阵(4x4)相乘;向量代表一个点的一些坐标,在我的应用程序中,它打算有很多(点)。我写了一个函数来做乘法:
public static double[] Multiply(double[] point, double[,] matrix)
{
double[] aux = new double[4];
for (int i = 0; i < 4; ++i)
{
aux[i] = 0;
for (int j = 0; j < 4; ++j)
{
aux[i] += point[j] * matrix[j, i];
}
}
return aux;
}
我认为这应该可以正常工作。
问题是这样的:函数是静态的,但是每次我打算使用它时,都会诞生一个新的double[4](aux[])。因为我需要这几十万次(一秒),所以我需要知道这些双打(aux)是否存储在内存中,直到我关闭应用程序,因此,启动大内存分配。垃圾收集器不是在移除它们(旧的)吗?
另一种方法是使用字段 double[] (此辅助)构建一个适当的类(矩阵类)并一遍又一遍地使用它。