Материалы из видео - Курсы по программированию - В этом выпуске мы начинаем с введения и плавно переходим к обзору загадочной функции, которая при поверхностном рассмотрении выглядит корректной, но на практике ведёт себя иначе. После запуска бенчмарка становится ясно, что есть скрытая проблема, и мы подробно обсуждаем, как именно бенчмарки помогают её выявить. Основная часть посвящена устройству Escape Analysis: разбираем этапы компиляции, механизм работы с памятью и разницу между размещением объектов на стеке и в куче. Отдельно рассматриваем два ключевых инварианта, лежащих в основе анализа, а также алгоритм подсчёта весов, который объясняет решения компилятора. Затем переходим к практическим методам устранения проблемы: использование gcflags, директивы //go:noescape и продвинутого приёма //go:linkname. Дополнительно показываем исходники, чтобы можно было повторить эксперимент, а в финале сравниваем результат исправленного бенчмарка с исходным и подводим итоги. Видео сочетает теорию и практику, делая сложные аспекты оптимизации Go доступными для разработчиков. Telegram: VK: Instagram: YouTube: @igoroutine Таймкоды: 00:00 - Введение 00:28 - Обзор загадочной функции 02:42 - Первичный запуск бенчмарка 03:20 - Бенчмарки и обзор проблемы 05:13 - Устройство Escape Analysis. Этапы компиляции 05:59 - Устройство Escape Analysis. Устройство памяти, размещение на stack vs heap 07:29 - Устройство Escape Analysis. Два основных инварианта 10:16 - Устройство Escape Analysis. Реализация, алгоритм подсчёта весов 11:59 - Решение проблемы с помощью директив компилятора. gcflags 14:23 - Решение проблемы с помощью директив компилятора. //go:noescape 15:17 - Решение проблемы с помощью директив компилятора. //go:linkname 16:53 - Дополнительные материалы. Исходники к видео 17:05 - Результат бенчмарка исправленной версии 17:42 - Финал
Hide player controls
Hide resume playing