我正在寻找降低成本的方法。将新项目添加到阵列时发生瓶颈。我正在运行约。一千万次迭代,所以任何性能的提高,不管多小,都会有很长的路要走。需要帮助改善循环性能
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
如何将2d数组替换为字典?但它取决于其他编程逻辑。 – Prisoner