
Pavel
30.10.2017
09:32:23

Maxim
30.10.2017
09:32:54
я и не отрицал, что в D GC так себе)
я говорю, что в подавляющем большинстве случаев в приложениях с нормальной архитектурой это не самое узкое место)
а когда оно становится узким, можно включать C-style)

Google

Pavel
30.10.2017
09:33:47
То есть по сути ты предлагаешь отказаться от GC и делать без него.
Потому что никак по другому ты это узкое место не оптимизируешь.

Maxim
30.10.2017
09:34:06
собственно, стандартная библиотека постепенно к этому идет)
vibed сейчас вот частями переписывают, попутно уменьшая зависимость от GC

Pavel
30.10.2017
09:36:33

Stepanos
30.10.2017
09:37:29
в go задержки gc не бульше 10 мс :)

Oleg
30.10.2017
09:46:55

Pavel
30.10.2017
09:48:36
Да они его на протяжении всего времени вылизывают как могут
Очень много сил на него тратят

Stepanos
30.10.2017
09:49:51
ну так круто) я не хочу заморачиваться nogc и тд, я хочу чтоб автомато gc все решал хорошо
вон в java проблем с етим не бьіло еще

Maxim
30.10.2017
10:02:16
кстати, как отстраненный пользователь Eclipse, никогда толком не использовавший в работе java, могу сказать, что в ней проблемы с памятью и фризами в принципе перманентны)
уж не знаю, связано ли это с криворукостью разработчиков или с кривостью виртуальной машины)

Google

Pavel
30.10.2017
10:07:57
Ну память она жрет хорошо, про фризы вроде не слышал проблем

Ievgenii
30.10.2017
10:16:44
Ну такое
Если писать не разбрасываясь объектами на лево и на права, то в СМ проблем не будет
Имхо

Dmitry
30.10.2017
11:38:50
в go задержки gc не бульше 10 мс :)
Это маркетинг булшит. Т.е. в идеальном случае, когда аллокаций немного и фоновый поток с ГЦ успевает все подчищать, тогда они стараются в эти 10 мс уложить остановки мира (но не забываем, что считай целое ядро постоянно трудится над сборкой в параллель основной программе). И надо понимать, что эти 10 мс могут быть каждые 10-15 мс, т.е. занимать до 90% всего времени. :) А если аллокаций становится больше, то чудес не бывает, сколько потребуется ГЦ на сборку, столько и займет. Невозможно гарантированно собрать кучу любого размера за 10 мс.

Stepanos
30.10.2017
12:16:39
тот же spring может под нагрузками месяцами работать... vibe.d так умеет?

Ievgenii
30.10.2017
12:19:58
Не уверен

Pavel
30.10.2017
12:20:33
Ну впринципе если ожидать что некоторые запросы будут отрабатывать за полсекунды (что не так уж плохо для web). то он будет работать.

Stepanos
30.10.2017
12:22:30
я о том что если простом разработчику нужно думать в D о GC, оптимизировать там что-то, то D тогда плохой язьік
ну в плане тогда он не лучше Java, и смьісл его использовать нет

Ievgenii
30.10.2017
12:23:24
Ну простой разработчик HL проект и не пишет)
Но в целом - разработчик всегда должен знать, что он делает
А если он слепо создает массу объектов там, где можно обойтись несколькими - то тут не в языке дело! И не в СМ...
И язык не должен ограничивать от такого
Иначе он будет сильно "узок"
имхо

Stepanos
30.10.2017
12:25:29
почему я не могу создавать масу обьектов? :)
в джаве создаю - все ок
вот пример, есть загрузка в 1000 запросов в секунду, где надо вернуть массив по 20 обьектов (пагинация все дела), как тут не создавать кучу обьектов?

Google

Maxim
30.10.2017
12:30:44
короче, предлагаю проект выходного дня: делаем хотя бы приблизительно похожие мини-проекты на java и D (vibe) и тестим их под нагрузкой)
смотрим результаты

Pavel
30.10.2017
12:31:02
А в D, ну возьмешь какой-нибудь готовый Object Pool, и на этом вся работа =)

Maxim
30.10.2017
12:31:58
по итогам проекта можно выносить вердикт и составлять план будущих работ)

Stepanos
30.10.2017
12:36:34
:) ну я за, rest клиент, которьій возвращает массив с 20 обьектов как жсон, в обьекте 15-20 полей (Data, string, int...)
обьектьі при кажном запросе создаются новьіе и набиваются какойто статикой

Maxim
30.10.2017
12:37:27
ну тут сразу появляется вопрос: а зачем объекты?)

Stepanos
30.10.2017
12:38:02
в джава другого нет) можешь структурьі использовать, но тогда как тьі gc потестируешь?

Ievgenii
30.10.2017
12:38:19
Если так хочешь делать - ради Бога
Но ты должен понимать, что СМ прийдется их удалять

qwerty
30.10.2017
12:39:11
что такое CM?

Ievgenii
30.10.2017
12:39:18
И создать объект только для того, чтобы его создать (скопировать или еще что-то) - это не верно
Сборщик Мусора
Я не против объектов
Я против их использования там, где они не нужны
Используй структуры
Это быстрее и практичней

Stepanos
30.10.2017
12:40:12
а как не создавая? представь что каждьій запрос просит разньіе данньіе с БД, которьіх там сотни тьісяч

Google

Ievgenii
30.10.2017
12:40:28
Структуру юзай

Maxim
30.10.2017
12:40:34
нашей целью должна быть не проверка сборщика мусора, а проверка пригодности D с его специфическими подходами для использования в продакшене)

Stepanos
30.10.2017
12:40:39
структурьі надо ручками удалять?

Ievgenii
30.10.2017
12:40:43
Тоже объект, но с слабой инкапсуляцией

Maxim
30.10.2017
12:40:59
структуры удаляются вместе со всем стеком, ибо они на стеке)

Ievgenii
30.10.2017
12:41:15

Stepanos
30.10.2017
12:41:26
а когда стек удаляется?

Ievgenii
30.10.2017
12:41:28
А нужна долгая работа с ним - фигаш его дальше по ссылке

Maxim
30.10.2017
12:41:30
и в D там, где не нужно наследование, лучше использовать именно их)

Admin
ERROR: S client not available

Ievgenii
30.10.2017
12:41:46

Maxim
30.10.2017
12:41:51

Ievgenii
30.10.2017
12:42:09
Объект, который описывает запись в БД, имхо, лучше представлять ввиде структуры
А вот обработку этих данных можно инкапсулировать и в каком-то классе
Просто создавать класс, который описывает одну запись, и просто скрывает поля для того, чтобы в будущем можно было сделать свои сетеры и гетеры и какая-то потенциальная обработка этих данных - это излишество

Maxim
30.10.2017
12:43:26
кстати, тут кто-то хотел fastcgi писать с использованием vibe-core, далеко ли дело продвинулось?)

Ievgenii
30.10.2017
12:43:35
Делай структуру. Создавай Класс работы с этой структурой
Ты же изначально целишься на высокие нагрузки

Stepanos
30.10.2017
12:44:08
ну иак я не против) структурьі так структурьі

Google


Ievgenii
30.10.2017
12:45:00
Смотри ситуацию:
В БД у тебя 1М записей
Тебе нужно их выбрать всех, просумировать какое-то поле, после взять каждую сотую запись, которая по какому-то там модулю подходит и что-то с ними сделать, или куда-то передать
Создавать 1М объектов из классов, чтобы сделать такие операции - ну крайняя расточительность
А вот структуры еще куда не шло...
Да и то, лучше это выруливать SQL запросами и выборкой только нужных записей
Да, чуть усложняется сама задача в плане - а зачем так???
Но это правильно!
А вот многие программисты так не делают, бо так нужно SQL group by писать...
Документацию читать
Получать низкий уровень работы с БД, а не простым db.findAll()
Вот, что я имел ввиду, когда говорил не создавать просто так много объектов
Ну а если тебе реально нужно их создавать, то тут без вариантов!
И тот же GO тоже будет существенно подвисать, если ты создаш 1М объектов и потом заставишь очищать эту память
Потому, что новому запросу вот УЖЕ нужна эта память, а не когда-то там в будущем
Опять таки все уперается в разработчика
И его лень


Stepanos
30.10.2017
12:50:03
при чем тут вьігребать все обьектьі с БД)) ясно что упадет нафиг при таком роскладе
мне надо возвращать ленту новостей юзерам - у каждого она своя, с БД вьігребается уже нужньіе обьектьі с нужной сортировкой, на стороне язьіка нужно только етот список конвертнуть в JSON и отправить юзеру, все

Andrey
30.10.2017
12:55:32
миллион записей тащить на клиент странный кейз

Stepanos
30.10.2017
12:57:36
@asan13 перечитай еще раз все :) где я писал о миллионе? есть 1000 паралельньіх запросов, где я ЗА ОДИН РАЗ КАЖДОМУ ПОЛЬЗОВАТЕЛЮ ОТПРАВЛЯЮ ТОЛЬКО 20 записей (пагинация, я писал), 1000 пользователей * 20 = 20к обьектов в секунду
но обьектьі каждьій раз разньіе, их кешировать/переиспользовать не получится

Ievgenii
30.10.2017
13:04:52
Я привел пример.