@proGO

Страница 1280 из 1674
Nikita
09.03.2018
19:19:54
Всем привет) Прошу прощения, я точно не первый кто задаёт это вопрос, но кто нибудь знает хороший видеокурс по Go?) Спасибо)

FRD Official - Dmitriy
09.03.2018
19:21:26
~83% веба, ага
И как правило, самые унылые 85%

Google
Olzhas
09.03.2018
19:21:55
Andrey
09.03.2018
19:22:40
95% сайтов унылые
с тех же ~17% аналогичная ситуация

FRD Official - Dmitriy
09.03.2018
19:23:04
95% сайтов унылые
Тем более. Особенно учитывая переход вэба от сайтов к социалкам, площадкам и т.д.

Olzhas
09.03.2018
19:23:12
с тех же ~17% аналогичная ситуация
Я имел в виду 95% от общего числа сайтов

FRD Official - Dmitriy
09.03.2018
19:23:55
Тумблр тому показатель

Olzhas
09.03.2018
19:24:07
Могу поспорить, что у большинства айтишников закладки в браузере сходятся на 40% минимум

С плюсами в некоторых областях может только раст посоперничать

Го можно выбросить из сравнения из-за gc

Ilnur
09.03.2018
19:36:57
Го можно выбросить из сравнения из-за gc
https://making.pusher.com/golangs-real-time-gc-in-theory-and-practice/

Roman
09.03.2018
20:36:03
https://making.pusher.com/golangs-real-time-gc-in-theory-and-practice/
Даже самый лучший GC не сравнится с кодом ручного менеджмента, ибо это чисто физически невозможно, но на то чтобы безупречно менеджить память вручную - уйдут годы практики и обучения

Daniel
09.03.2018
20:44:18
не сравнится в чем?

Google
Roman
09.03.2018
20:44:57
не сравнится в чем?
manual memory management

Daniel
09.03.2018
20:45:03
я понял

я не понял, по какому параметру мы сравниваем его с gc

Subbotin
09.03.2018
20:46:04
Очевидно по производительности и латенси.

Daniel
09.03.2018
20:46:16
ну-ну.

нет, теоретически оно так

Subbotin
09.03.2018
20:46:51
Сильно теоретически

Daniel
09.03.2018
20:47:06
вот-вот

практически - ни разу мне лично gc не мешал

Roman
09.03.2018
20:48:16
имеется ввиду, что Go чисто физически не может достичь уровня производительности C/C++ (написанного с умом). Но это как обычно вечный вопрос tradeoff'ов, либо человеко-часы, либо циклы процессора и второе становится всё дешевле.

думаю с приходом ИИ ситуация рано или поздно перевернётся и код будет эффективнее писать компилятор на базе ИИ.

Daniel
09.03.2018
20:51:38
послушайте, ну ведь это ерунда. мы не упираемся нигде в gc. мы упираемся в сеть, упираемся в диск, упираемся в скорость работы памяти. а в gc- нет, не упираемся. бул у меня в начале 90-х такой знакомый программист. он дизассемблировал comand.com и прочел код работы с диском. и выяснил, что работа с диском там чрезвычайно неэффективна. и переписал все "как следует". и его код был даже сильно лучше, я его видел. но! он не смог даже процента разницы намерять. потому, что диск меееедленный...

Roman
09.03.2018
20:52:00
Останется только написать тз
я не говорю что программы будет писать ИИ, я говорю что исполняемый код будет писать ИИ

Daniel
09.03.2018
20:52:51
так расскажи же, где!

Vladimir
09.03.2018
20:53:21
так расскажи же, где!
да банально - берем наш гошный графитный стек, задаем пачку тяжелых запросов и видимо что гц начинает жрать 20 ядер из 24

притом в какой-то момент перестает успевать подбирать мусор и приходит оом

Google
Vladimir
09.03.2018
20:53:41
четко видно на профилировщике

реально доступных (непомарканных) объектов - 1ГБ

то что помаркано на удаление - 127ГБ

но неподчищено

Daniel
09.03.2018
20:54:36
так это, может, пул? может, не gc плохой, а руки, того, кривоваты?

Vladimir
09.03.2018
20:55:17
Просто GC плохо себя ведет когда ему прилетает много новых короткоживущих объектов

Subbotin
09.03.2018
20:55:31
Я упирался в GC, когда писал на го риал тайм под девайс на мипс. Пришлось выключить GC и пускать его ручками, когда бывали простои

Vladimir
09.03.2018
20:55:42
а это для меня увы нормальный юзкейс со стороны внешних пользователей

решение у него есть - фактически писать свой аллокатор памяти и не триггерить гц никогда

а все объекты выделять черзе кастомный алокатор

тогда все зашибись, работает отлично

Vladimir
09.03.2018
20:57:13
@onokonem считаешь что руки кривые, весь код на гитхабе, PRs are welcome

предлагаю показать как надо что ли, тогда

Daniel
09.03.2018
21:00:07
какой пул? Что вы несете?
если реально используется 1GB, а вы навыделяли и освободили 128GB - это значит, что с аллокацией что-то не так. и первое, что приходит на ум - https://golang.org/pkg/sync/#Pool. если он не решает задачу - можно написать свой переиспользователь объектов.

предлагаю показать как надо что ли, тогда
я теперь, мать его, go-евангелист. я теперь скринкасты и блогпосты пишу, а не код. опухну скоро.

но, если будет денек свободный, погляжу обязательно

только надо будет мне рассказать, как проблема воспроизводится

Google
Vladimir
09.03.2018
21:01:47
только надо будет мне рассказать, как проблема воспроизводится
да элементарно - ставится стек, делается пара сотен запросов которые вытягивают по 20-30ГБ на фронтэнд )

с малым интервалом времени

результат гарантирован

и не успевает подбирать мусор

sync.Pool не совсем поможет к сожалению

Daniel
09.03.2018
21:05:45
а пробовали?

Vladimir
09.03.2018
21:07:15
а пробовали?
думал над этим, из очевидных минусов - пострадает скорость анмаршалинга просядет, плюс писать свою собственную реализацию gRPC и протобуфа - то еще удовольствие

проще заворкэраундить в моем случаи проблему тем что таки запилить стриминг данных

Admin
ERROR: S client not available

Daniel
09.03.2018
21:07:41
он сильно generic, поэтому слегка useless для разных corner cases, и свой-под-задачу обычно эффективнее.

Vladimir
09.03.2018
21:08:03
@onokonem там спорные моменты есть

проблему не решит координально

потому что от кучи мусора прилетающего по сети не спасет

оттянет неизбежное - да

сильно? на полгода

Daniel
09.03.2018
21:09:15
по сети прилетает массив байт (и егонадо принять в буфер, выделенный раз и навсегда) и анмаршалить можно в объект, тоже выделенный раз и навсегда

Vladimir
09.03.2018
21:10:21
и параллельных запросов тоже много

основная проблема то как раз в том, что в случаи с Го нет возможности сказать "вот это все - мусор, убери"

Google
Vladimir
09.03.2018
21:11:08
и честно говоря выглядит проще просто выделить кусок памяти и заниматься ручным менеджментом памяти на нем

и ждать пока таки нам завезут request oriented gc

Daniel
09.03.2018
21:11:58
Vladimir
09.03.2018
21:12:30
то что в снэпшоте видно 1 ГБ используемый не значит что не было иначе чуток раньше

увы, но клиенты внешние - это люди, они делают странную хрень

и это считается нормой

Daniel
09.03.2018
21:13:32
с тем, как gc устроен.

Vladimir
09.03.2018
21:13:41
кстати с чем конкретно это связанно?
с тем что авторы Го оптимизировали GC под лейтенси и минимизацию stop the world

поэтому очень много чего делается в бэкграунде

и когда у тебя очень много (сотни тысяч или миллионы) новых объектов в секунду, а сами объекты короткоживущие, все становится очень грустно

Roman
09.03.2018
21:14:23
с тем, как gc устроен.
я потому-что всегда задавался вопросом "в чём собственно проблема гибридного механизма управления памятью?" но никогда особо не копался глубже

Vladimir
09.03.2018
21:14:52
и правильно сделали
ну не совсем правильно )

Vladimir
09.03.2018
21:15:03
точнее это ок для части кейсов

ну вот от короткоживучести должен помочь пул.
с ним будет печалька когда у тебя объектов миллионы )

Daniel
09.03.2018
21:15:36
ты мерял?

Vladimir
09.03.2018
21:15:37
к тому же пулл работает интересно

Daniel
09.03.2018
21:15:45
миллионы - это ведь не очень много

Vladimir
09.03.2018
21:15:46
ты мерял?
в другом проекте мерял

Страница 1280 из 1674