У меня есть программа на C #, которая использует производственную грамматику для создания трехмерных моделей деревьев и цветов и аналогичных органических объектов (см. запись в Википедии для получения дополнительной информации о L-системах) - когда я генерирую Большое дерево с листьями, я (как и ожидалось) получаю экспоненциальный рост в струне, который бы увеличился до 100 концертов, если бы я позволил (и я бы этого хотел).
Ограничения - я должен сделать это (вроде) в C # - сторона C ++ / native занята компиляцией и рендерингом довольно огромной геометрии, которая получается.
Так что StringBuilder прямо сейчас - даже если бы он мог с этим справиться, мне не хватает памяти!
Я не хочу делать чисто файловое решение - waaaaaayyyyyyyy toooooooooooo sloooooooooooowwww!
Я не могу изменить грамматику - я понимаю, что могу сжать стандартную нотацию L-Systems, но это контекстно-зависимая грамматика, поэтому, как только она заработает, вы станете суеверно относиться к ней.
Вещи, которые я рассмотрел
Отображенные в память файлы - я не против использовать P / Invoke, чтобы добраться до нативного уровня для поддержки вещей, я просто не хочу переписывать всю производственную систему на C ++ - но я не нашел много в способ удобных библиотек для C # для доступа к этой функции
Низкоуровневое копание с управлением памятью / сбоем страниц и т. Д. - но, эй, если бы я сделал это, я мог бы также продать его как продукт - делает медленное решение на основе чистого файла не такой уж плохой идеей
У кого-нибудь есть идеи? Как эффективно перемещаться / манипулировать / расширять мультигигрические строки, созданные в производственной грамматике?