Как насчет производительности GC на Haskell для мягких приложений реального времени, таких как игры?

Поскольку я понял, что логика правил игры должна обрабатывать огромную сложность, я рассматриваю использование нестандартного языка в игровой сфере в качестве языка сценариев внутриигровой логики. Причиной внутриигрового скрипта является представление сложной логики с меньшим количеством кода. Так чрезвычайно хорошо абстрагируемый язык требуется.

Но большинство хорошо абстрагированных языков используют GC. И обычно ГХ нагружают процессор. В основном это откладывает очистку памяти и делает это сразу. Очень важно для графики в реальном времени, включая игры и графический интерфейс.

AFAIK, GC Haskell немного отличается от других языков на основе GC из-за его неизменного атрибута. Трудно представить. Я не мог найти какой-либо документ это подробно.

Чем отличается? И является ли процессор свободным для долго работающих программ? (хорошо распределенная нагрузка по времени, для каждого такта может быть вызвана команда GC, выполняемая вручную)

3 ответа

Решение

Вы можете посмотреть на тему, инициированную Люком Палмером, здесь: http://www.haskell.org/pipermail/haskell-cafe/2010-February/thread.html February/thread.html# 73881.

Вас может заинтересовать это сообщение в блоге Саймона Марлоу о перемещении GHC из коллекции "Останови мир" во что-то более параллельное со временем паузы, более подходящим для мягких приложений реального времени, например игр.

Я сам не тестировал профиль задержки GHC, но, насколько я понимаю, эти паузы в 0,0007 мс могут показаться небольшими, но они пропорциональны размеру кучи, крошечному для этой игрушечной программы "крестики-нолики", поэтому реальные кучи и время пауз будет на порядки больше.

Возможно, вас заинтересует коммерческая игра на Haskell Nikki and the Robots, выпущенная в 2011 году компанией Joyride Labs.

Кажется, у них нет проблем с сборщиком мусора.

Другие вопросы по тегам