ベクトル (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[])。私はこれを数百/千回 (1 秒) 必要とするので、アプリケーションを閉じるまでそれらの double (aux) がメモリに格納されているかどうかを知る必要があるため、大きなメモリ割り当てにクランクアップします。ガベージコレクターはそれら(古いもの)を削除していませんか?
もう 1 つの方法は、フィールド double[] (この aux) を持つ適切なクラス (マトリックス クラス) を構築し、それを何度も使用することです。