185 похожих чатов

Я тут подумал такую мысль. Языки, которые производят нативный бинарник

типа Go/D/Haskell/OCaml, вставляют GC в конкретную программу, т.е. в каждом отдельном случае GC должен хорошо работать именно для заданной программы, а для всех остальных — пофиг. Это значит, что GC можно специализировать под программу.

Как простейший пример, допустим, GC делает pooled allocations, т.е. аллоцирует объекты близких размеров в специальных аренах. Когда мы компилируем конкретную программу, мы знаем все типы, которые она использует, и их размеры. Значит, мы можем при компиляции посчитать более-менее оптимальное количество арен и размеров аллокаций чтобы эффективно распихивать именно объекты из нашей программы, и "захардкодить" это в GC.

Внимание вопрос: кто-нибудь на практике так делает?

8 ответов

9 просмотров

Так ведь было же в PLComp! https://t.me/plcomp/28

Alexander-Chichigin Автор вопроса
Peter Sovietov
Так ведь было же в PLComp! https://t.me/plcomp/28

Это немного в другую сторону. Я думал про (простую) специализацию или даже всего лишь подстройку параметров GC под конкретную программу (и ahead of time).

Для знания всех размеров нужно также отсутствие массивов с динамически задаваемой длиной, на что готовы пойти лишь немногие. Думал о таком в рамках Oberon, так как в нём как раз нет таких массивов, но не более чем думал 😆.

Alexander-Chichigin Автор вопроса
Константин
Для знания всех размеров нужно также отсутствие ма...

Нет, не нужно. Их можно скидывать в отдельный пул или "спускать" в системный аллокатор — это ортогональный вопрос, который никак не мешает остальным.

Alexander Chichigin
Нет, не нужно. Их можно скидывать в отдельный пул ...

мешает в плане соотношения полезности к усложнению

Ну да, какой смысл в такой подстройке, если потом большАя часть будет загнана через make(uint8, len)

Alexander-Chichigin Автор вопроса
Константин
Ну да, какой смысл в такой подстройке, если потом ...

Не знаю, потому и спрашиваю. Кому-то, может, есть смысл, кто-то, может, замерил увеличение производительности?

Похожие вопросы

Обсуждают сегодня

зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
Гайз, кто-нибудь пробовал запустить probe-rs под камень, которого нет в probe-rs? Мб есть какой-нибудь пример у кого... Через target-gen попробовал сгенерировать chip-descript...
Максим Смирнов
2
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Всем привет. Ребят подскажите пожалуйста. Вопрос по дизасемблировани. Начну с начала. У меня есть скомпилированная программа на ГО (я разработчик) - в ней есть защита лицензии...
Zloy
11
Можно попросить небольшое ревью кода? Тут немнога, я ничего интереснее не придумал, чем написать аналог tree в качестве практики с cmake. https://github.com/hrimov/tree-unix/...
Andrew Hrimov
11
Добрый день! Подскажите, пожалуйста: какими компетенциями нужно обладать, чтобы претендовать на работу эрланг (отдельная благодарность, если про элексир тоже подскажете) разр...
via ☸️ led
20
Желаю получить совет от великих ботмейкеров которые успешно поднимали ботов на несколько тысяч одновременно активных юзеров Какая чушь нужна людям прямо сейчас, и что стоило ...
ռɛ ʋɛʀʍօʀɛ
6
Карта сайта