Post Thumbnail

Разбор неожиданной оптимизации в Go: сдвиг массива на 4 байта через добавление padding-поля ускоряет операцию обнуления на 49% на Intel и на 9% на AMD. Обнуляция - это что-то типо b.data = [words]uint32{}

Но почему так происходит? Компилятор генерирует инструкцию REP STOSQ, чей механизм Enhanced REP (ERMSB) записывает целые кэш-строки без предварительного чтения, но только при 8-байтном выравнивании адреса - при смещении. Добавление 4 байт как раз выравнивает позицию массива по 8 в примере автора.

Не уверен что вам это пригодиться, но мне нравятся люди, которы зелазют так глубоко в кишки к байтам и битам

Похожее

Post Thumbnail

На Rust после Go

Автор, пять лет писавший на Go, сначала скептически отнесся к появлению Rust в е...

Post Thumbnail

Go для Dreamcast

Я только на прошлой неделе публиковал пост, в котором искал инструмент для прогр...