Курсы по программированию

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

Шахматы по сети / Алгоритмы. VIP. Можно пройти?

  • На этом уроке мы немного порефакторим и
    добавим очень полезную функцию.
  • Дата отправки отчёта: 22 мая 2018 г.
  • Задание выполнено: за 1 час. 30 мин.
  • Чему научился: Реализовал проверку на правильность хода перед пересозданием доски. Как это просто оказалось, оказывается! А я пытался проверки делать в дополнительном конструкторе... Позор мне _-_

    Зато моё тестирование из предыдущего урока - www.videosharp.info/10080/checking/chess3=1935 - показало странные результаты. (Чтобы не повторять тут стену текста, подробности посмотрите в отчёте по предыдущему уроку).

    А по данному уроку, после реализации проверки возможности хода перед пересозданием board для начальной шахматной позиции, без сбора подробной статистики, но после нескольких тестов, можно точно только следующее (чтобы не постить длинную таблицу поверхностного тестирования передам результаты на словах, а подробнее можно на скриншоте посмотреть):

    1) Появились сильные колебания производительности на глубинах расчёта ходов 1-3 и без многократных прогонов с вычисление среднего результата сказать определённо ничего нельзя, кроме следующих пунктов:
    2) На глубине расчёта 3 стабильно повторяется ускорение расчётов в связках NextMovesLINQ() + YieldValidMoves() (1775ms против 2583ms) и NextMovesLINQ() + YieldValidMovesLINQ() (1815ms против 2327ms).
    3) На 2-10% ускорились все варианты расчётов для глубины ходов 4.

    Выводы:
    1) Для собственно проверки возможности хода в данном проекте значительной разницы при избавлении от лишних пересозданий board нет - скорость расчёта сильно скачет и явно в большей мере зависит от внешних факторов (сборщик мусора, троттлинг процессора и т.п.), а для проверки возможности хода фигурой глубина расчёта больше 1 не требуется.
    2) Обращает внимание значительное ускорение расчётов для глубины 3 - 30-40%. Возможно есть какой-то sweet spot в количестве создаваемых объектов и вычислений над ними конкретно для LINQ.
    3) Многопоточные вычисления продолжают лидировать для глубины расчёта 4, а вот про глубину 1-3 сказать определённо уже ничего нельзя - слишком сильные колебания результатов в каждом прогоне теста.
    4) В любом случае для глубины вычислений 4 избавление от лишних board сказывается благотворно.

    Это всё выводы для начальной шахматной позиции без сделанных ходов. Для других позиций результаты могут отличаться. К следующему финальному уроку постараюсь сделать более подробное тестирование с вычислением средних результатов :)
  • Оценка видео-уроку:
Отчёт от 10080 за Шахматы по сети / Алгоритмы. VIP. Можно пройти?




Оцени работу

 
Сохранить страницу:

1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  FireWolf  # Шахматы по сети / Алгоритмы. VIP. Можно пройти? / 2018-05-22 15:19

Посчитай уже глубже, ходов на 5, 6, 7 и дальше....
Оставь комп на ночь, если нужно.
Вот тогда уже можно говорить о результатах.


18131. --
Александр
Александр
ответить
→  FireWolf  # Шахматы по сети / Алгоритмы. VIP. Можно пройти? / 2018-08-26 14:47

Да отличные результаты ! Такой профессиональный подход к тестированию


  • Отчёт оценивали:
    17947Dmitry Sinitsin+1   3922Александр+1   9980Timoha+1   6452Кирилл Шмойлов+1   1Евгений Волосатов+1   8275Tekashnik+1   17443WildOrc+1   10895Danil42Russia+1   791Валерий Жданов+1   16066Bodrik_torf+1   Посетитель+1   17022Константин Мельников+1   3850Григорий+1   10936Сергей+1   16861Serge+1   17606Виктор+1   16218Дмитрий+1   4395Денис+1   6644valerys Nikola+1   5394Anton+1   3747Сергей+1   459Сергей Сергеевич+1   Посетитель+1  

Начинаем практику по языку C#





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Научился: Реализовал функцию Chess().IsValidMove() Модифицировал функцию Chess().Move() Протестировал компиляцию и запуск



Научился: Мне кажется, что красивее и понятнее было бы назвать метод "ХодНеВалиден" и инвертировать логику. Если ход не сделать или после хода будет шах - значит ХодНеВалиден, значит return this.