No video

Golang: специфические вопросы производительности / Даниил Подольский, Кирилл Даншин

  Рет қаралды 19,155

HighLoad Channel

HighLoad Channel

Күн бұрын

Приглашаем на конференцию Saint HighLoad++ 2024, которая пройдет 24 и 25 июня в Санкт-Петербурге!
Программа, подробности и билеты по ссылке: vk.cc/cuyIqx
--------
--------
HighLoad++ Moscow 2018
Тезисы и презентация:
www.highload.ru...
Язык Go уверенно набирает популярность. Настолько уверенно, что сегодня уже имеет смысл разговаривать о его специфических проблемах. Например, о проблемах производительности.

--------
Нашли ошибку в видео? Пишите нам на support@ontico.ru

Пікірлер: 24
@hiyoutube6769
@hiyoutube6769 Жыл бұрын
Легенда чатика по Golang
@ksviety
@ksviety 10 ай бұрын
Даниил Подольский: "... это - черная магия", программисты на C: "да я колдун!"
@user-iw2bi9ns2b
@user-iw2bi9ns2b 3 жыл бұрын
последние слова никогда так не смешили "хорошо калеки, спасибо" ))
@alexanderp4532
@alexanderp4532 3 жыл бұрын
инвалиды, огузки)))
@alexgorodecky1661
@alexgorodecky1661 5 жыл бұрын
"Мы что-то померили на конкретных случаях и сделали какие-то бинарные выводы". Но, кажется, так и не поняли почему это работает именно так. Особенно улыбнуло, что "интерфейс не стоит ничего". Как это ничего? Это, как минимум, отсутствие инлайнинга и косвенный вызов(если компилятор не раздуплится в девиртуализацию для конкретного случая). Это МОЖЕТ стоить ничего, но это не значит что это ВСЕГДА так.
@whiteniga9489
@whiteniga9489 4 жыл бұрын
Поверхностно, но наверное, именно поэтому докладчик предупредил что «откровений не будет»
@alexanderp4532
@alexanderp4532 2 жыл бұрын
4:50 на этом этапе вместо записи структуры как значения записываем ее как ссылка и внезапно интерфейсы оказываются в 2-3 раза дороже. Мало того, если добавить тут еще один тест с приведением не к интерфейсу, а к ссылке на структуру, то оказывается, что приведение типов не стоит ничего от слова совсем(хотя разница колеблется в промежутке 10-50%, но при скорости работы 0.48-0.5 и 0.7-0.75 нс это будет ощутимо только в том случае, если вы только и делаете, что приводите типы), а интерфейсы - не такое уж дешевое удовольствие
@melickon
@melickon 2 жыл бұрын
Хотел много чего написать, но почитал комментарии и смотрю, я не один такой. Исследовать программу как черный ящик, когда можно просто посмотреть ассемблер и увидеть, что генерирует компилятор, это странно. Еще более странно не учитывать работу кэшей, которые при "хорошем стечении обстоятельств" повысят скорость на порядок, а при плохом наоборот. Если синтетический тест с минимальным кодом (увеличением на единичку) попадает в кэш, то что будет с реальной программой, никто не скажет. Про defer. Вопрос не только в том, сколько времени работает сама функция и сколько занимает реализация defer, а еще и в том, что происходит внутри самого defer. Если там закрываются сетевые соединения, удаляются временные файлы или еще что, то время работы самого механизма defer пренебрежимо мало. P.S. Те, кому значимы наносекунды пишут на C/C++. P.P.S. Хотел бы я увидеть хоть один пример из реального кода на go, где defer что-то замедлил...
@DarDarbl4
@DarDarbl4 2 жыл бұрын
@@paxpax1707 Он вроде говорит что ждал что канал будет как мьютекс, но канал значительно дороже мьютекса оказался
@ventilyator
@ventilyator 5 жыл бұрын
это все ниочем. нужно объяснять почему так происходит.
@Arenoros
@Arenoros 5 жыл бұрын
Да там ни чего интересного, дерьмовый фронтенд который не умеет в оптимизации, можно просто на godbolt глянуть количество инструкций которые генерирует компилятор gcc.godbolt.org/z/MZ1ylU
@slavamobile3733
@slavamobile3733 4 жыл бұрын
Это какая-то астрология. Сейчас компиляторы на столько умные, что всю ахинею разработчика умеют линеаризовывать. А здесь не раскрыто главного, какой ассемблерный код генерится и какие бывают граничные условия. Говоря о наносах, не стоит забывать про промах кеша и branch mispredict
@stokitko
@stokitko 3 жыл бұрын
компиляторы не настолько крутые как хотелось бы да и часто чтобы соптимизировало надо код немного всё таки облагородить особым образом
@yodapunishes
@yodapunishes 2 жыл бұрын
"Если ваша функция выполняется меньше 100нс, то вам не нужен дефер". А когда вообще возникает такая необходимость оптимизировать 100нс-функции?
@alexanderp4532
@alexanderp4532 Жыл бұрын
Если функция ооочень часто вызывается и половину времени занимает только defer, то можно от него избавиться. Например, какой-нибудь сеттер с мьютексом. Как правило люди не парятся на счет анлока и просто используют паттерн mu.Lock(); defer mu.Unlock().
@wadyn95
@wadyn95 10 ай бұрын
Они ещё не знают как популярны Арм сервера
@xVoLAnD
@xVoLAnD 2 жыл бұрын
Где таких берёте? Ходит, воду пьёт, вздыхает... никак напиться не может. Жесть! 🤷‍♂️
@Levelord92
@Levelord92 2 жыл бұрын
ну, человек немаленькой комплекции.. можно сделать скидку
Little brothers couldn't stay calm when they noticed a bin lorry #shorts
00:32
Fabiosa Best Lifehacks
Рет қаралды 20 МЛН
WILL IT BURST?
00:31
Natan por Aí
Рет қаралды 10 МЛН
PEDRO PEDRO INSIDEOUT
00:10
MOOMOO STUDIO [무무 스튜디오]
Рет қаралды 9 МЛН
Антон Сергеев, «Go под капотом»
36:37
Kolesa Group
Рет қаралды 95 М.
Use actors, Luke / Андрей Парамонов (Dodo Engineering)
47:53
Little brothers couldn't stay calm when they noticed a bin lorry #shorts
00:32
Fabiosa Best Lifehacks
Рет қаралды 20 МЛН