Range по функциям в Go 1.23

Range по функциям в Go 1.23

В Go 1.23 добавлена новая возможность *ranging over functions* (итераторы)...

ноября 16, 2024 · 10 минут · German Gorelkin
Go sync.Pool и механика, лежащая в его основе

Go sync.Pool и механика, лежащая в его основе

sync.Pool - это место, где вы можете хранить временные объекты для последующего использования....

ноября 11, 2024 · 19 минут · German Gorelkin
Использование benchstat проекций в анализе Go бенчмарков

Использование benchstat проекций в анализе Go бенчмарков

В 2023 году benchstat был полностью переработан: появились проекции(projections), фильтрация и группировки, позволяющие проводить надежные сравнения по любому измерению, определяемому вашими суббенчмарками (они же «cases»)...

ноября 6, 2024 · 11 минут · German Gorelkin
Go sync.WaitGroup и Проблема выравнивания

Go sync.WaitGroup и Проблема выравнивания

WaitGroup - это способ подождать, пока несколько горутин закончат свою работу. Мы начнем с основ, а затем разберемся, как это устроено под капотом....

октября 17, 2024 · 12 минут · German Gorelkin
Go sync.Mutex. Normal и Starvation Mode

Go sync.Mutex. Normal и Starvation Mode

Mutex, или MUTual EXclusion, в Go - это способ убедиться, что только одна горутина одновременно работает с общим ресурсом. Этим ресурсом может быть кусок кода, целое число, map, структура, канал или практически все, что угодно....

октября 13, 2024 · 8 минут · German Gorelkin
Go Profilers

Go Профилировщики

Обзор профилировщиков, встроенных в среду выполнения Go: CPU Profiler, Memory Profiler, Block Profiler и Mutex Profiler....

октября 7, 2024 · 15 минут · German Gorelkin
Ментальная модель языка Go

Ментальная модель языка Go

Основная задача Go - мультиплексировать и абстрагировать аппаратные ресурсы, подобно операционной системе. Для этого обычно используются две основные абстракции: Планировщик Goroutine(Goroutine Scheduler) и Сборщик мусора(Garbage Collector)...

сентября 18, 2024 · 5 минут · German Gorelkin
Диспетчеризация интерфейса

Диспетчеризация интерфейса

Рассмотрим вызовы методов интерфейса в C++ (GCC), Java (OpenJDK/HotSpot), C# (CLR), Go и Rust....

сентября 9, 2024 · 13 минут · German Gorelkin
Сравнение производительности с пакетом unique

Сравнение производительности с пакетом unique

Interning - это процесс хранения в памяти только одной копии значения и совместного использования уникальной ссылки на нее вместо аллокации нескольких копий и траты памяти....

сентября 6, 2024 · 2 минуты · German Gorelkin
Динамическая и статическая диспетчеризация

Динамическая и статическая диспетчеризация

В этой статье объясняется разница между динамической диспетчеризацией (поздним связыванием) и статической диспетчеризацией (ранним связыванием). Мы также коснемся различий в языковой поддержке виртуальных и статических методов и того, как можно избежать использования виртуальных методов....

сентября 5, 2024 · 7 минут · German Gorelkin