【发布时间】:2015-01-24 12:33:40
【问题描述】:
我正在开发一个程序,它的执行时间很长。我正在尽我所能提高性能,但是我在这方面的知识有限。谁能推荐一种方法来加快下面的方法?
public static double DistanceBetween2Points(double[,] p1, double[,] p2, int patchSize)
{
double sum = 0;
for (int i = 0; i < patchSize; i++)
{
for (int j = 0; j < patchSize; j++)
{
sum += Math.Sqrt(Math.Pow(p1[i, j] - p2[i, j], 2));
}
}
return sum;
}
该方法通过计算两幅图像上两点之间所有距离的总和来计算两幅图像之间的距离。
【问题讨论】:
-
我不确定您的例程在做什么,但您是否尝试删除
Sqrt和Pow操作并改用Abs? -
我没有,我现在试试。你碰巧知道一种加速 for 循环的方法吗?我很确定它们是执行时间如此缓慢的原因
-
这是很奇怪的计算。你要计算什么?你能更详细地解释你的意图吗?
-
我正在搜索和比较图像上的不同补丁。基本上它是用于图像识别,给出传入的两个补丁(p1和p2)我计算每个像素与原始图像和比较图像的距离。 (希望这是有道理的)
-
@ConorShannon - 好吧,你似乎是一个 ^2,实际上只是删除了
-符号 - 但我看不出你在做什么将实现计算的目标距离(但有时我们并不总是有大局)
标签: c# performance for-loop