Удивительный ответ .. Спасибо, Питер.

аюсь профилировать мой код C ++ с помощью инструмента Perf. Реализация содержит код с инструкциями SSE / AVX / AVX2. В дополнение к этому код скомпилирован с-O3 -mavx2 -march=native флаги. я верю__memset_avx2_unaligned_erms функция является реализацией libcmemset, perf показывает, что эта функция имеет значительные накладные расходы. Имя функции указывает на то, что память не выровнена, однако в коде я явно выравниваю память, используя встроенный макрос GCC__attribute__((aligned (x))) Что может быть причиной того, что эта функция имеет значительные накладные расходы, а также почему вызывается невыровненная версия, хотя память выровнена явно?

Я приложил образец отчета как изображение.

Ответы на вопрос(1)

Ваш ответ на вопрос