Разбор неожиданной оптимизации в Go: сдвиг массива на 4 байта через добавление padding-поля ускоряет операцию обнуления на 49% на Intel и на 9% на AMD. Обнуляция - это что-то типо b.data = [words]uint32{}
Но почему так происходит? Компилятор генерирует инструкцию REP STOSQ, чей механизм Enhanced REP (ERMSB) записывает целые кэш-строки без предварительного чтения, но только при 8-байтном выравнивании адреса - при смещении. Добавление 4 байт как раз выравнивает позицию массива по 8 в примере автора.
Не уверен что вам это пригодиться, но мне нравятся люди, которы зелазют так глубоко в кишки к байтам и битам
14.07.2026
Похожее
27.08.2026
На Rust после Go
Автор, пять лет писавший на Go, сначала скептически отнесся к появлению Rust в е...
24.08.2026
Поговорим про PGO
Profile-guided optimization (PGO) заменяет эвристические догадки компилятора реа...
22.08.2026
Время читать код
Автор утверждает, что главное узкое место разработки незаметно сместилось с напи...
21.08.2026
Go для Dreamcast
Я только на прошлой неделе публиковал пост, в котором искал инструмент для прогр...