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

Andrey
09.03.2018
19:19:56

Olzhas
09.03.2018
19:20:34

FRD Official - Dmitriy
09.03.2018
19:21:26

Google

Olzhas
09.03.2018
19:21:55

Andrey
09.03.2018
19:22:40

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

Olzhas
09.03.2018
19:23:12

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

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

Vasily Romanov
09.03.2018
19:26:43

Nikita
09.03.2018
19:27:16

Ilnur
09.03.2018
19:36:57

Roman
09.03.2018
20:36:03

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

Google

Roman
09.03.2018
20:44:57

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'ов, либо человеко-часы, либо циклы процессора и второе становится всё дешевле.
думаю с приходом ИИ ситуация рано или поздно перевернётся и код будет эффективнее писать компилятор на базе ИИ.

Subbotin
09.03.2018
20:51:24

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

Roman
09.03.2018
20:52:00

Vladimir
09.03.2018
20:52:30
я упирался
знаю людей которые упирались

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
а это для меня увы нормальный юзкейс со стороны внешних пользователей
решение у него есть - фактически писать свой аллокатор памяти и не триггерить гц никогда
а все объекты выделять черзе кастомный алокатор
тогда все зашибись, работает отлично

Sergey
09.03.2018
20:57:08

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.
если он не решает задачу - можно написать свой переиспользователь объектов.
но, если будет денек свободный, погляжу обязательно
только надо будет мне рассказать, как проблема воспроизводится

Google

Vladimir
09.03.2018
21:01:47
с малым интервалом времени
результат гарантирован
и не успевает подбирать мусор
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 ГБ используемый не значит что не было иначе чуток раньше
увы, но клиенты внешние - это люди, они делают странную хрень
и это считается нормой

Roman
09.03.2018
21:13:08

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

Vladimir
09.03.2018
21:13:41
поэтому очень много чего делается в бэкграунде
и когда у тебя очень много (сотни тысяч или миллионы) новых объектов в секунду, а сами объекты короткоживущие, все становится очень грустно

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

Alexey
09.03.2018
21:14:36

Vladimir
09.03.2018
21:14:52

Daniel
09.03.2018
21:15:02

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