Мне интересно, есть ли проекты / хотя бы какие-нибудь исследования по комбинации сжатия в памяти и распределителей памяти (конечно, за счет некоторой скорости)?
Например, представьте сценарий:у нас есть огромное дерево, которое мы должны обработать.Это дерево не вписывается в память.С помощью сжатия распределителя мы можем разместить практически любое дерево.
Конечно, можно использовать итерационный подход, не создавая дерево сразу, но мой вопрос чисто теоретический (на сегодняшний день).
Вероятно, для разыменования потребуются специальные макросы / шаблоны, чтобы распределитель мог распаковывать выбранные области.Но что, если один регион ссылается на другой регион и т. Д.?Должен быть какой-то очень сложный алгоритм, возможно, разрешенный только в управляемых языках (но Бём смог создать GC для C ++!)
Или, может быть, он настолько сложный / медленный (даже по сравнению с сохраненной памятью), что не 'не стоит вообще?Виртуальная память и обмен могут быть очень медленными, особенно в средах со сборкой мусора.Недавно приложение размером 1 Гбайт привело к тому, что вся ОС перестала отвечать на запросы ... Так что механизмы уровня ядра не обязательно эффективны.
Вы можете подумать об этом (я все еще пытаюсь заверить вас, что это не слишком глупо).идея) как противопоставление быстрых фьютексов пользовательского режима против медленных нативных мьютексов, быстрых зеленых потоков пользовательского режима (как в Erlang с до 20 миллионов одновременных процессов на машине) против медленных нативных потоков и т. д.