Порция байтоебства на сегодня
Автор расследовал регрессию производительности в своём Go-коде. Изменение в файле hash2.go вызвало падение скорости на 3% в совершенно другом, hash2u16.go, хотя его код не менялся. Оказалось, что дело в сдвиге выравнивания инструкций на 416 байт, из-за чего горячие участки кода из разных функций попали в одни и те же наборы L1-кэша инструкций, превысив его 8-канальную ассоциативность, и начали вытеснять друг друга.
Решения как такового нет, но начиная с Go 1.25 можно использовать -ldflags="-funcalign=64", чтобы выравнивать функции по 64 байтам и делать бенчмарки более надежными.
В статье самое интересное - посмотреть как автор в принципе разбирается с отладкой производительности
27.05.2026
Похожее
07.09.2026
У нас отмена!
Статья разбирает, как пакет singleflight в Go предотвращает лавину запросов к кэ...
05.09.2026
DDD во времена AI
Статья утверждает, что с ростом AI-кодинга идеи Domain-Driven Design становятся ...
03.09.2026
Конкурентный сервер на Go
Это восьмая часть серии о конкурентных сетевых серверах, в этот раз посвященная ...
03.09.2026
Горутины повсюду
Частенько мы пишем Go-сервисы, не задумываясь о том, кто и как запускает наши го...