
Evgeny
11.03.2018
06:09:14
во всяком случае я незнаю как еще

Denis
11.03.2018
06:09:42
> но как только он встроенные хэши
Щито?

Evgeny
11.03.2018
06:09:43
некоторые выявил просто сделав соответствующие урезанные тесткейсы

Google

Evgeny
11.03.2018
06:09:55

Denis
11.03.2018
06:10:06
Вообще не понял о чём ты)
toHash?

Evgeny
11.03.2018
06:10:23
он в программе заменил один из встроенных ассоциативных масивов на обертку вокруг std.container.rbtree

Denis
11.03.2018
06:11:35
Аа
олдфажное название "хэш" для ассоциативных массивов
раньше тоже так говорил но никто меня не понимал)

Evgeny
11.03.2018
06:13:00
и это существенно

Denis
11.03.2018
06:13:28
когда только-только появился шаблон такой в С++ кажетя то все стали так их называть
ну и от этого путаница пошла

Evgeny
11.03.2018
06:14:59

Google

Evgeny
11.03.2018
06:15:35
а плюсовой std::map - не хэш-таблица, а бинарное дерево

Denis
11.03.2018
06:16:22
ну ок
когда потом появилась криптография и хэши начали массово применяться меня постоянно это путало, запомнилось.
читаешь такой текст а там из-за этих хэшей ничего не понятно.
(о вреде неправильных определений, короч)

Evgeny
11.03.2018
06:18:03
есть такое

Denis
11.03.2018
06:43:35
если оставить наподольше то явно будет видно что же там навыделялось в таких объёмах

Evgeny
11.03.2018
06:45:24

Denis
11.03.2018
06:45:49
а, действительно, в логе только количество выделений
почему-то
могли бы и количество уничтожений добавить

Evgeny
11.03.2018
06:46:03
допустим я увидел в первой строке, что у меня миллион раз выделился объект A. Значит ли это что течет этот объект? А вот нихрена.

Denis
11.03.2018
06:48:57
интересно, с чем связано то, что лог именно такой, без количества уничтожений
нелогично как-то
а, цель другая! профилировка - она про скорость
т.е. важно количество и объёмы, а то что оно не удаляется это пофиг. и в конце GC всё равно всё удалит при завершении, так что статистика сойдётся.
нужно иметь возможность снимать какой-то "мгновенный дамп"
нужно какой-то специальный аллокатор написать который всё сможет подсчитать и выдать

Igor
11.03.2018
06:52:40
Есть аллокатор который ведет статистику по другим аллокаторам stat или что-то в этом роде.

Google

Evgeny
11.03.2018
06:54:00

Denis
11.03.2018
06:54:20
да не, я про причину рассуждал просто. логично же добавить было бы 2 столбик

Evgeny
11.03.2018
06:55:11

Denis
11.03.2018
06:58:05
https://forum.dlang.org/thread/pjbughflpznzdsamlqbx@forum.dlang.org поднял некропостом

Dark
11.03.2018
09:54:31
https://habrahabr.ru/post/350844/
Некропостинг, но...
С одной стороны такой подход мощный и позволяет творить магию в компайл-тайм, с другой стороны, все это превращается в зубодробительные конструкции, которые может прочитать только автор

Pavel
11.03.2018
09:59:24
По сути то всё - давно известное конфигурирование сборки.
Может, более объектное и удобное.
А может и менее, смотря как сделать)

Dark
11.03.2018
10:05:30
Да не, я не спорю, что на С макросоми это будет тот ещё хоррор.
Но легко написать теплейт, которой будешь понимать только ты, в первую очередь из-за того, что best practices нигде не закреплены

Pavel
11.03.2018
10:07:55
Мне даже кажется, при таком подходе ответветственность за поведение класса выносится за пределы класса.

Dark
11.03.2018
10:10:17
Не всегда это хорошо

Dmitry
11.03.2018
10:10:27
Денис, а почему может быть так что GC что то не освобождает?

Pavel
11.03.2018
10:12:29

Dark
11.03.2018
10:13:27
Несовершенство механизмов сборки мусора, короче
Кстати, а в D есть аналоги WeakMap/WeakSet, которые позволяют GC собирать их содержимое?

Denis
11.03.2018
11:08:55

Dmitry
11.03.2018
12:05:32

Pavel
11.03.2018
12:05:34

Google

Dark
11.03.2018
12:06:22

Dmitry
11.03.2018
12:06:56
Куда ты ее будешь тем же строкам прикреплять?

Dark
11.03.2018
12:08:25
К началу выделенной памяти, не?

Evgeny
11.03.2018
12:08:52

Dmitry
11.03.2018
12:09:03
Если написать свою альтернативную реализацию GC, где иначе устроить кучу, тогда да, там можно будет хранить доп. инфу о типах.

Dark
11.03.2018
12:09:22

Denis
11.03.2018
12:11:51
> при аллокации прикрепляем метку типа
Подозреваю, это часть их "ассемблера"

Evgeny
11.03.2018
12:12:15

Dmitry
11.03.2018
12:12:55
http://progcode.ru/2017/06/24/dconf-2017-под-капотом-мусорщика-ди-дмитрий-ол/

Admin
ERROR: S client not available

Dark
11.03.2018
12:13:08
О
Ща глянем
Ну так там таблицы и метаданные уже и так есть, не вижу огромных проблем добавить хотя бы байт на метку типа

Dmitry
11.03.2018
12:26:35
Байта маловато. Но да, я и говорю, если всю схему аллокации поменять, то можно.

Dark
11.03.2018
12:27:08
А почему сразу же - всю схему?

Dmitry
11.03.2018
12:28:21
Ну сравни как сейчас char[] хранится и как будет.

Igor
11.03.2018
12:29:14

Dark
11.03.2018
12:29:29

Igor
11.03.2018
12:32:37

Google

Dark
11.03.2018
12:33:03

Igor
11.03.2018
12:50:43
gc имеет указатель на typeinfo

Dark
11.03.2018
12:59:01
А почему тогда нельзя запрофилировать деаллокацию?!

Dmitry
11.03.2018
13:07:39
указатель на ClassInfo есть в каждом объекте, он для вызова финализатора и используется. Но не каждый кусок данных в куче - объект класса.
Т.е. массив структур от простой строки GC уже не отличит.

Pavel
11.03.2018
13:11:39
Как вариант можно было бы сделать через version() профилирующие вставки, пусть они отжирают ресурсов но можно было бы сделать хорошую профилирующую сборку и быстро найти в чем проблема

Evgeny
11.03.2018
13:17:22

Igor
11.03.2018
13:27:23
А как gc узнаёт что он смотрит на структуру в куче не на класс?

Dark
11.03.2018
13:29:31
А GC это знать не нужно же
Не?

Evgeny
11.03.2018
13:33:10
и было бы странно если бы не работало

Igor
11.03.2018
13:34:35
Ну да, я и говорю что он видит информацию о типе
Не только классе
Но точного механизма я не знаю, поэтому могу врать

Evgeny
11.03.2018
13:36:26
а, ты видимо не мне отвечал
полагаю в TypeInfo масссива есть инфа о типе который он содержит

Denis
11.03.2018
13:37:22
где о типе? он просто запускает деструктор пофиг чего

Evgeny
11.03.2018
13:37:36
деструктор массива?

Denis
11.03.2018
13:39:16
элементов
на которые он ссылки хранит
и он знает тип элементов