public static char[,] fields = new char[10000, 10000]; // содержит 't' и 'r' символы
List<Tuple<int, int, double>> tuples = new List<Tuple<int, int, double>>();
for (int i = 0; i < 10000; i++)
{
for (int r = 0; r < 10000; r++)
{
if (fields[i, r] != 't')
tuples.Add(Tuple.Create(i, r, Math.Sqrt(Math.Pow(i - x, 2) + Math.Pow(r - y, 2))));
}
}
Происходит поиск дистанции с каждой точкой в матрице для заданых координат. Работает очень медленно, какие есть возможности оптимизации?
UPD: чтобы не считать дистанцию для точек два раза, поменял
int r = 0
на
int r = i
, но сильного эффекта это не дало.
UPD2: нельзя ли это ускорить аппаратно? Например использовав GPU?