Performance

encoding/json/v2 в Go 1.27: вы уже переехали, не написав ни строки

encoding/json/v2 в Go 1.27: вы уже переехали, не написав ни строки

encoding/json в Go 1.27 работает поверх нового движка v2 по умолчанию — обновивший тулчейн уже переехал, ничего не переписывая. На бенчах стенда это стоит decode в полтора-два раза дороже, а поведение при этом не меняется вовсе: строгость и выигрыш по аллокациям даёт только явный переход на encoding/json/v2 и потоковый jsontext.

Один поток и событийный цикл: откуда у Redis скорость

Один поток и событийный цикл: откуда у Redis скорость

Redis обрабатывает команды в одном потоке — и при этом отдаёт сотни тысяч операций в секунду. Разбираем, почему single-threaded не значит медленно: событийный цикл, I/O-мультиплексирование, threaded I/O в новых версиях, пайплайнинг. И честно про обратную сторону: где один поток становится узким местом и откуда берётся хвостовая latency.

Память в Go: стек, куча и escape-анализ

Память в Go: стек, куча и escape-анализ

Где живёт значение — на стеке или в куче — в Go решает не программист, а escape-анализ компилятора. Что уводит переменную в кучу (возврат указателя, боксинг в interface, захват замыканием), как это увидеть через go build -gcflags=-m, чем это грузит сборщик мусора и как проверять бенчами — на живом стенде с реальным выводом

reflect в Go: когда оправдана рефлексия и чего она стоит

reflect в Go: когда оправдана рефлексия и чего она стоит

reflect даёт доступ к типам и значениям в рантайме — на нём стоят encoding/json, ORM, валидаторы. Но за гибкость платят: потеря типобезопасности, аллокации и заметное замедление. Разбираем Type/Value/Kind, изменяемость через reflect, три закона рефлексии и её цену — на бенчмарках рефлексия против прямого доступа

Как читать: дизассемблер и Plan 9-синтаксис

Как читать: дизассемблер и Plan 9-синтаксис

Как читать чужой Go-ассемблер: go tool objdump и -gcflags=-S, Plan 9-синтаксис (порядок операндов, суффиксы размера, псевдорегистры FP/SB/SP/PC) и разбор дизасма наивного dot product — доказательство того, что компилятор не векторизовал цикл