Я профилирую приложение, используя Intel VTune, и есть одна конкретная точка доступа, в которую я копирую переменную-член __m128i
в конструкторе копирования класса C ++.
VTune дает следующую разбивку:
Instruction CPU Time: Total CPU Time: Self
Block 1:
vmovdqa64x (%rax), %xmm0 4.1% 0.760s
add $0x10, %rax 46.6% 8.594s
Block 2:
vmovapsx %xmm0, -10x(%rdx) 6.5% 1.204s
(Если это имеет значение, компилятор g cc 7.4.0)
Я признаю, что я новичок в сборке, но очень удивительно, что одна конкретная инструкция добавления принимает на 46% времени моего приложения, учитывая, что приложение выполняет много других сложных вещей, а добавление - такая тривиальная операция.
Я как-то неправильно интерпретирую вывод профилирования? Есть ли путь для оптимизации этого, кроме «копировать эту переменную меньше»?