Как насчет производительности 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.
Кажется, у них нет проблем с сборщиком мусора.