我在存儲圖像信息的陣列上運行圖像分析代碼。不幸的是,代碼非常繁重,平均需要25s才能完成一幀。我看到的主要問題是數組尋址。這是最快通過2D陣列運行並在那裏在最快的陣列尋址
所有的任何差異水平然後垂直
for (int y = 0; y < array.Length; ++y)
for (int x = 0; x < array[].Length; ++x)
//Code using array[y][x]
和垂直然後horrizontal?
for (int x = 0; x < array[].Length; ++x)
for (int y = 0; y < array.Length; ++y)
//Code using array[y][x]
此外,我試圖避免直接尋址和使用指針。
for (int y = 0; y < array.Length; ++y)
int* ptrArray = (int*)array[0];
for (int x = 0; x < array[].Length; ++x, ++ptrArray)
//Code using ptrArray for array[y][x]
或
for (int x = 0; x < array[].Length; ++x)
int* ptrArray = (int*)array[0];
for (int y = 0; y < array.Length; ++y, ptrArray += array[].Length)
//Code using ptrArray for array[y][x]
任何幫助不勝感激。 最大
我應該提到,該陣列實際上是位圖顏色分配的BitmapData:/ sry ... –
那麼,你已經固定內存? – Oded
您是否嘗試過編碼每個解決方案並測量需要多長時間?這會給你最準確的答案。但是如果我不得不猜測,我會說選項3和選項4可能比選項1和選項2稍快。 – aroth