Size: a a a

Compiler Development

2020 May 21

PS

Peter Sovietov in Compiler Development
Kakadu
Кто-нить видел исследования, где сравнивают скорость выделения объектов (в минорной куче, например) между разными языками/средами исполнения?
Обычный two-space сборщик получается самым быстрым. Стековое выделение + проверка не переполнение. Оценивать в изолированном виде скорость выделения, мне кажется, не очень полезно.
источник

K

Kakadu in Compiler Development
MaxGraey
В смысле? Измерить оферхед над вызовом malloc из libc + возможный оверхед на инициализацию добавления информации для GC если он присутствует?
Не факт же, что malloc будет быстрее или медленнее. В инетах пишут, что С++ тоже выделяет большой блок памяти заранее, и оттуда постепенно и выдает память. Точно так же как и управляемые среды
источник

K

Kakadu in Compiler Development
Artyom Drozdov
не очень понятно как сравнивать: в языках с GC ты можешь получить основное пенальти при деаллокации
Пофиг на деаллокацию
источник

M

MaxGraey in Compiler Development
Kakadu
Не факт же, что malloc будет быстрее или медленнее. В инетах пишут, что С++ тоже выделяет большой блок памяти заранее, и оттуда постепенно и выдает память. Точно так же как и управляемые среды
Это тогда уже будет не куча а а статическая память
источник

K

Kakadu in Compiler Development
Peter Sovietov
Обычный two-space сборщик получается самым быстрым. Стековое выделение + проверка не переполнение. Оценивать в изолированном виде скорость выделения, мне кажется, не очень полезно.
А если я хочу сравнить  OCaml с .Net на выделении мелких объектов или т.п.?
источник

AD

Artyom Drozdov in Compiler Development
Kakadu
Не факт же, что malloc будет быстрее или медленнее. В инетах пишут, что С++ тоже выделяет большой блок памяти заранее, и оттуда постепенно и выдает память. Точно так же как и управляемые среды
не точно так же, фрагментация и компактинация влияют
источник

M

MaxGraey in Compiler Development
Ну и есть разные стратегии. Например bump allocator будет самый быстрый, но это врядли можно назвать честным менеджментом кучи
источник

K

Kakadu in Compiler Development
В общем и целом я пытаюсь проверить лозунг "в нашем рантайме маленькие объекты в минорной куче выделяются очень бытсро"
источник

МБ

Михаил Бахтерев... in Compiler Development
а это кто
Можно ли назвать reference counting видом GC? Вроде пишут что RC требует меньше памяти и процессорного времени чем Tracing GC, но я не уверена так ли это.
Это всё очень от реализации зависит. Но для RC нужен счётчик ссылок, да ещё  и атомарный
источник

AD

Artyom Drozdov in Compiler Development
MaxGraey
Ну и есть разные стратегии. Например bump allocator будет самый быстрый, но это врядли можно назвать честным менеджментом кучи
ну да, в JVM есть способ аллокаций, который просто инкрементит указатель на кучу, а как память кончается - падает
источник

А

Алексей in Compiler Development
Михаил Бахтерев
Это всё очень от реализации зависит. Но для RC нужен счётчик ссылок, да ещё  и атомарный
В расте есть неатомарный Rc и атомарный Arc
источник

MM

Mikhail Maltsev in Compiler Development
Kakadu
Не факт же, что malloc будет быстрее или медленнее. В инетах пишут, что С++ тоже выделяет большой блок памяти заранее, и оттуда постепенно и выдает память. Точно так же как и управляемые среды
Если говорить про Linux и Mac, то нет, new в C++ это обёртка над malloc
источник

BD

Berkus Decker in Compiler Development
Kakadu
Кто-нить видел исследования, где сравнивают скорость выделения объектов (в минорной куче, например) между разными языками/средами исполнения?
есть пачка статей про измерение скорости sgen иногда со сравнением с другими
источник

M

MaxGraey in Compiler Development
Artyom Drozdov
ну да, в JVM есть способ аллокаций, который просто инкрементит указатель на кучу, а как память кончается - падает
Epsilon GC. Сейчас там что то еще появилось
источник

PS

Peter Sovietov in Compiler Development
Kakadu
А если я хочу сравнить  OCaml с .Net на выделении мелких объектов или т.п.?
Думаю, надо просто подождать ответа от специалиста из нашего чата :)
источник

BD

Berkus Decker in Compiler Development
Kakadu
Не факт же, что malloc будет быстрее или медленнее. В инетах пишут, что С++ тоже выделяет большой блок памяти заранее, и оттуда постепенно и выдает память. Точно так же как и управляемые среды
в инетах много чего пишут
источник

а

а это кто in Compiler Development
Алексей
В расте есть неатомарный Rc и атомарный Arc
+, Rc не обязан быть атомарным
источник

K

Kakadu in Compiler Development
Peter Sovietov
Думаю, надо просто подождать ответа от специалиста из нашего чата :)
Который Егор Богатов? (не помню ник)
источник

M

MaxGraey in Compiler Development
Вообще в интернетах много чего пишут, вот в V вооьще обезали zero rantime и управление памяти полностью статически =)
источник

PS

Peter Sovietov in Compiler Development
Kakadu
Который Егор Богатов? (не помню ник)
источник