Встроенная против встроенного ASM для кодирования SSE в VC ++ 2K8 - PullRequest
4 голосов
/ 01 апреля 2010

Я уже делал некоторое встроенное ASM-кодирование для SSE, и это было не слишком сложно даже для тех, кто не знает ASM. Но я отмечаю, что MS также предоставляет встроенные функции для многих таких специальных инструкций.

Есть ли какая-то особая разница в производительности или какая-либо другая веская причина, по которой один должен использоваться выше другого?

Повторим из заголовка, в нем конкретно рассматриваются особенности, предоставляемые VC ++ 2008 для неуправляемого нативного C ++.

Ответы [ 4 ]

4 голосов
/ 01 апреля 2010

В Visual C ++ нет встроенной сборки для x64. Intrinsics можно использовать и на x64. Если вы хотите портировать свой код на x64, вам придется использовать встроенные функции.

3 голосов
/ 01 апреля 2010

В общем, лучше использовать встроенные функции - это более продуктивно для программиста, и хороший компилятор (например, Intel ICC) сделает достойную работу по распределению регистров, планированию команд и т. Д. Компилятор Microsoft не так хорош в этом отношении, но он, вероятно, все еще делает разумную работу - вы всегда можете переключиться на ICC позже, если вам нужно улучшить производительность.

1 голос
/ 01 апреля 2010

Встроенные функции идентичны их эквивалентным инструкциям по сборке, и вы должны использовать их, если это возможно - компилятор знает, что их нужно переводить напрямую, разницы в производительности нет.

0 голосов
/ 16 декабря 2011

Используйте встроенные функции.

Использование сборки обычно приводит к нескольким дням безостановочной работы, только чтобы узнать, что компилятор превосходит вашу лучшую производительность на 5%. (5%, если вы действительно хороши; скорее всего, 30%.)

...