Компилятор Microsoft очень плох в оптимизации, когда вовлекается встроенная сборка. Он должен создавать резервные копии регистров, потому что если вы используете eax, он не будет перемещать eax в другой свободный регистр, он будет продолжать использовать eax. Ассемблер GCC намного более продвинут в этом направлении.
Чтобы обойти это Microsoft начал предлагать встроенных . Это гораздо лучший способ выполнить оптимизацию, поскольку он позволяет компилятору работать с вами. Как упомянул Крис, встроенная сборка не работает под x64 с компилятором MS, поэтому на этой платформе вам ДЕЙСТВИТЕЛЬНО лучше использовать встроенные функции.
Они просты в использовании и обеспечивают хорошую производительность. Я признаю, что мне часто удается выжать еще несколько циклов, используя внешний ассемблер, но они чертовски хороши для повышения производительности, которое они обеспечивают