[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;
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5