私はこのループでコストを削減する方法を探しています。ボトルネックは、新しい項目を配列に追加するときに発生します。私は約実行しています。何千もの繰り返しがあるため、パフォーマンスの向上は、どれほど小さくても長い道のりになります。ループのパフォーマンスを向上させるのに役立つ必要があります
int[][] coordinates;
public void RefactorCoordinates()
{
try
{
coordinates = new int[10000000][];
int nextIndex = 0;
double width = OffsetWidth;
double height = OffsetHeight;
double depth = OffsetDepth;
for (int z = 0; z < width; ++z)
{
for (int y = 0; y < height; ++y)
{
for (int x = 0; x < depth; ++x)
{
coordinates[nextIndex] = new int[] { z, y, x };
nextIndex++;
}
}
}
Array.Resize(ref coordinates, nextIndex);
}
catch(Exception ex)
{
ex.ToString();
}
}
時間の大部分、その後の配列のサイズ変更、またはループはどれくらいコストがかかりますか?あらかじめ合計サイズを計算するのが簡単ではないでしょうか(とにかく新しい座標を宣言していますか?)また、インデックスに基づいてz、y、xを計算できませんか?ちょうどいくつかのアイデアを投げて、実際に意図が何であるか分かりません – Icepickle
アレイのサイズ変更は事実上無料です。新しい項目が配列に追加された行をコメントアウトすると、実行は瞬時に行われます。私は3つの整数値を受け取り、それらの値の各増分を表す新しいオブジェクトを作成しています。それはループの唯一の機能です – Jace
辞書に2次元配列を置き換えるのはどうですか?それはプログラミングロジックの残りの部分に依存します。 – Prisoner