Почему «добавить» занимает так много времени в моем приложении? - PullRequest
1 голос
/ 14 февраля 2020

Я профилирую приложение, используя 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% времени моего приложения, учитывая, что приложение выполняет много других сложных вещей, а добавление - такая тривиальная операция.

Я как-то неправильно интерпретирую вывод профилирования? Есть ли путь для оптимизации этого, кроме «копировать эту переменную меньше»?

...