[branch] Алгоритм A-star (А*), оптимизация - C#
Формулировка задачи:
Данная тема является ответвлением темы: Алгоритм A-star (А*), оптимизация
x5reunion
, Кстати, Вместоpublic Point TileCoordinates { get; set; }public Point TileCoordinates;
Решение задачи: «[branch] Алгоритм A-star (А*), оптимизация»
textual
Листинг программы
using System;
using System.Diagnostics;
namespace ConsoleApplication161
{
class Program
{
static void Main(string[] args)
{
const int N = 100, M = 100000, K = 100;
var a = new Foo {A = 10, B = 10};
unchecked
{
int trash = 0;
Stopwatch sw1 = new Stopwatch(), sw2 = new Stopwatch();
for (int i = 0; i < N; i++)
{
if (i % 2 == 0)
{
for (int j = 0; j < M; j++)
{
sw1.Start();
for (int k = 0; k < K; k++)
{
a.A = j + k;
}
sw1.Stop();
sw2.Start();
for (int k = 0; k < K; k++)
{
a.B = j + k;
}
sw2.Stop();
trash += a.A + a.B;
}
}
else
{
for (int j = 0; j < M; j++)
{
sw2.Start();
for (int k = 0; k < K; k++)
{
a.B = j + k;
}
sw2.Stop();
sw1.Start();
for (int k = 0; k < K; k++)
{
a.A = j + k;
}
sw1.Stop();
trash += a.A + a.B;
}
}
}
Console.WriteLine(trash);
Console.WriteLine("Время доступа к свойству = {0}", sw1.Elapsed);
Console.WriteLine("Время доступа к полю = {0}", sw2.Elapsed);
Console.WriteLine("Разница между ними составляет {0:P} в пользу {1}", Math.Abs(1 - sw1.ElapsedTicks / (double)sw2.ElapsedTicks), sw1.Elapsed < sw2.Elapsed ? "Свойства" : "Поля");
}
}
}
struct Foo
{
public int A { get; set; }
public int B;
}
}