.NET 4.x Слишком медленное вычисление выражения с квадратным корнем - C#
Формулировка задачи:
Код
Выполняется 200 +_ 30 милисекунд.
Что за жесть))) Так со всем Math в NET?
private double GetDistanceBetweenPoints(Double[] firstPoint, Double[] fithPoint)
{
return Math.Sqrt(Math.Pow(fithPoint[0] - firstPoint[0], 2) +
Math.Pow(fithPoint[1] - firstPoint[1], 2) +
Math.Pow(fithPoint[2] - firstPoint[2], 2))*1000;
}
А если у меня отрисовка точек на экране... пересчет таким способом штук 100 точек тупо повесит приложение.
Решение задачи: «.NET 4.x Слишком медленное вычисление выражения с квадратным корнем»
textual
Листинг программы
class Program {
static private double GetDistanceBetweenPoints(Double[] firstPoint, Double[] fithPoint) {
return Math.Sqrt(Math.Pow(fithPoint[0] - firstPoint[0], 2) +
Math.Pow(fithPoint[1] - firstPoint[1], 2) +
Math.Pow(fithPoint[2] - firstPoint[2], 2)) * 1000;
}
static void Main(string[] args) {
double[] a = { 1, 2, 3 };
double[] b = { 3, 4, 5 };
var sw = new System.Diagnostics.Stopwatch();
sw.Start();
var dist = GetDistanceBetweenPoints(a, b);
sw.Stop();
Console.WriteLine("Distance {0:F1} calculated for {1:F3} ms",
dist, (1000.0 * sw.ElapsedTicks) / Stopwatch.Frequency);
}
}