Size: a a a

2021 May 22

И

Игорь in dlang.ru
Попробую разобраться
источник

DP

Dmitry Popov in dlang.ru
Тут примерно то же с картинками: http://www.infognition.com/blog/2014/the_real_problem_with_gc_in_d.html
источник

Е

Евгений in dlang.ru
Все упирается в то, что в D обчные указатели  имеют тот же тип что и GC-указатели.
Компилятор просто не знает нужно ли ему пихать write barrier или нет.
источник

Е

Евгений in dlang.ru
В Nim эти указатели имеют разные типы, что позволяет использовать куда более широкий круг типов GC
источник

Е

Евгений in dlang.ru
Надо признать что boehm  (консервативный) GC не всегда делает программу медленнее. На форуме Nim встречались топики где народ тестировал разные типы GC. И достаточно нередко консервативный GC побивал всякие ARC и mark-and-sweep GC.
источник

Е

Евгений in dlang.ru
Именно за счет того, что не нужно делать write barriers
источник

Е

Евгений in dlang.ru
И я считаю что создатели Nim поступили верно в этом плане.
источник

DH

Dark Hole in dlang.ru
Mark-and-sweep это то что Дмитрий описывал?
источник

DH

Dark Hole in dlang.ru
Или что?
источник

Е

Евгений in dlang.ru
В частности. Там много разных техник существует mark-and-sweep это одна из них.
источник

Е

Евгений in dlang.ru
Техники совмещают часто
источник

Е

Евгений in dlang.ru
Дмитрий описал еще и инкрементальную технику, а также технику когда GC делит объекты на "старые" и "молодые". "Молодые" проверяются чаще, чем "старые".
источник

Е

Евгений in dlang.ru
Короче, крутой, быстрый ГЦ - это серьезная штука.
источник

И

Игорь in dlang.ru
да, судя по их количеству и ручек для тюнинга в яве
источник

Е

Евгений in dlang.ru
В ниме в конечном итоге выбрали для GC по умолчанию ARC с детектором циклов и агрессивной оптимизацией.
источник

SG

Serg Gini in dlang.ru
А я что-то не пойму, ним же умеет генерировать Си код - как он ГЦ может юзать в таком случае?
источник

DH

Dark Hole in dlang.ru
Крутое, быстрое отсутствие GC тоже серьезная штука
источник

SG

Serg Gini in dlang.ru
@nogc наше всё :)
источник

Е

Евгений in dlang.ru
А D генерит ассемблерный код, откуда там GC? 😀
источник

Е

Евгений in dlang.ru
Да, только она ложится на плечи программиста.
источник