Сообщение Re[54]: Зачем нужен ЯОС? от 01.07.2021 7:50
Изменено 01.07.2021 9:03 budden
Re[54]: Зачем нужен ЯОС?
А между тем возникла серьёзная техническая проблема: слишком медленно работает выделение памяти. Есть ряд причин, пока не успел выяснить, какая из них имеет место. Либо дело в том, что на каждое выделение памяти запрашивается блокировка (это лечится предвыделением крупного блока на легковесный процесс, от которого откусываются кусочки, пока он не закончится, тогда можно обойтись без блокировок), либо дело просто в большом объёме выделенных данных (после внедрения юникода нагрузка на кучу резко выросла) — тогда по идее должна помочь поколенческая сборка мусора — в CL она есть и вроде там не было таких суровых проблем с быстродействием. Может быть, надо ввести отдельные пулы памяти для блоков разного размера — это по идее тоже должно ускорить sweep (подметание?). Поскольку это место довольно сложное и хрупкое, похоже, что я могу с этим провозиться месяц и больше.
https://gitlab.com/budden/ja-o-s/-/blob/главная/source/Heaps.Mod#L844
https://gitlab.com/budden/ja-o-s/-/blob/главная/source/Heaps.Mod#L844
Re[54]: Зачем нужен ЯОС?
А между тем возникла серьёзная техническая проблема: слишком медленно работает выделение памяти. Есть ряд причин, пока не успел выяснить, какая из них имеет место. Либо дело в том, что на каждое выделение памяти запрашивается блокировка (это лечится предвыделением крупного блока на легковесный процесс, от которого откусываются кусочки, пока он не закончится, тогда блокировки будут нужны реже), либо дело просто в большом объёме выделенных данных (после внедрения юникода нагрузка на кучу резко выросла) — тогда по идее должна помочь поколенческая сборка мусора — в CL она есть и вроде там не было таких суровых проблем с быстродействием. Может быть, надо ввести отдельные пулы памяти для блоков разного размера — это по идее тоже должно ускорить sweep (подметание?). Поскольку это место довольно сложное и хрупкое, похоже, что я могу с этим провозиться месяц и больше.
https://gitlab.com/budden/ja-o-s/-/blob/главная/source/Heaps.Mod#L844
https://gitlab.com/budden/ja-o-s/-/blob/главная/source/Heaps.Mod#L844