我在存储图像信息的阵列上运行图像分析代码。不幸的是,代码非常繁重,平均需要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