我正在尋找降低成本的方法。將新項目添加到陣列時發生瓶頸。我正在運行約。一千萬次迭代,所以任何性能的提高,不管多小,都會有很長的路要走。需要幫助改善循環性能
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