init_tables

Тема в разделе "Машинное отделение", создана пользователем Orlov, 13 май 2007.

  1. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Не слишком ли много условий?
    delta = pos->King[side] - f +128;
    И одно условие - смотрим по предварительно рассчитанному массиву.
  2. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Пробовал и так, и так. Разница очень небольшая, плюс-минус несколько процентов. Причём машинно-зависимая. Если память быстрая, то вариант с массивом выигрывает. Если медленная, то с проверками. Даже не память, а кэш.

    Условий не очень много. В подавляющем большинстве случаев (когда нет шаха конём) будет срабатывать полторы проверки - в половине случаев на знак, и один раз на модуль меньше 33. Думаю, что предсказатель ветвлений будет их хорошо предсказывать, т.к. ветки часто будут повторяться.

    Во Фрукте, вроде бы, тоже такая составная конструкция используется.

    В общем, главное правило оптимизации: не оптимизируй :)
  3. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Я уже недооптимизировался и в шашках и в шахматах так что и там и там NPS в три раза меньше чем у конкурентов. :)
  4. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Ну, на такой замене проиграть в три раза при всём желании не получится. Даже если число проверок удвоить :)
  5. WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Жуткий офтоп. Про генерацию ходов нужно писать в другой ветке.
  6. ProstoTak Старожил

    • Ветеран
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    5.479
    Симпатии:
    123
    Репутация:
    1
    Оффлайн
    Значицца так. Докладаю. После некоторой доделки мой генератор даёт 5 000 000 генераций всех (20) ходов из начальной позиции за 22 секунды. Это получается около 4,5 миллионов ходов в секунду генерит. Правда пока нет проверки на шах и превращение только в ферзя. Проц Celeron 900 MHz.
    Это много или мало?
  7. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Это мало. Сделай Perft тест, и посчитай какая скорость получается на нем.
  8. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Кто-нибудь из модераторов может перенести обсуждение Генератора/проверки на шах в отдельную тему?
  9. ProstoTak Старожил

    • Ветеран
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    5.479
    Симпатии:
    123
    Репутация:
    1
    Оффлайн
    А что это такое?
    И для примера что у тебя и на каком проце получается?
  10. Chemer Максим

    • Участник
    Рег.:
    14.09.2006
    Сообщения:
    1.674
    Симпатии:
    13
    Репутация:
    0
    Адрес:
    Запорожье
    Оффлайн

Поделиться этой страницей