我知道这是一个愚蠢的问题,为什么这个代码minX计算成本很高,但我想,有人可能会告诉我我的错误。感谢
// getMap is a 2 dimentional array of type short I need to find maxX,minX,maxY,minY
//Can't use Math.Min , as it will get the lower bound i.e 0, i want values after filtering
for (int X = 0; X < getMap.GetLength(0); X++)
{
for (int Y = 0; Y < getMap.GetLength(1); Y++)
{
if((short)getMap.GetValue(X,Y) != 0)
{
//if i take it out, it works fine ,I need to
if (minX > X )
minX = X;
else
X = minX;
// Prints some stuff and does other computation
}
}
}
// Draws image
答案 0 :(得分:4)
else X = minX;
部分没有多大意义。它会导致无限循环,因为您将循环变量X
设置为较低的值。
只有当最多1列包含非零值时(假设您将minX初始化为较大的值),您的代码才会终止。
例如,假设X=0
和X=1
列在某处包含非零值。然后当它击中0列中的非零值时minX
被设置为0.然后它会使用X=1
通知minX>X
通知非零值并将X设置为0 0.永远重复。
答案 1 :(得分:1)
我不知道(short)getMap.GetValue(X,Y)
与getmap[X,Y]
的比较,但似乎过于复杂。
您可以做的是将short[,] getMap
替换为short[][] getMap
。
阵列数组(锯齿状数组)在这些嵌套循环场景中通常更快,因为抖动可以更好地优化范围检查。