Intrinsics против Inline ASM для кодирования SSE в VC ++ 2K8
-
23-09-2019 - |
Вопрос
Я делал какое -то встроенное кодирование ASM для SSE раньше, и это не было слишком тяжело даже для того, кто не знает ASM. Но я отмечаю, что MS также предоставляет внутреннюю упаковку много таких специальных инструкций.
Есть ли определенная разница в производительности или какая -либо другая причина, почему одна должна использоваться над другим?
Чтобы повторить из названия, это специфически охватывает внутреннюю часть, выявленную VC ++ 2008 для неуправляемого, нативного C ++.
Решение
В целом лучше использовать внутреннюю часть - это более продуктивно для программиста, и хороший компилятор (например, Intel ICC) выполнит достойную работу по распределению регистра, планированию инструкций и т. Д. Компилятор Microsoft не так хорош в этом отношении, но, вероятно, все еще все же все еще Делает разумную работу - вы всегда можете перейти на ICC позже, если вам нужно получить лучшую производительность.
Другие советы
Один гиталит, которая будет выглядеть рядом с тем, что вы хотите, это «
«Личные» филиалы отлично подходят для окружающей среды, где разработчики должны поделиться работой, но не могут напрямую потянуть друг от друга (обычно из-за причины связанной с сетью или аутентификацией, оба распространенным в корпоративных установках).
Личные ветви существуют в пространстве имен самостоятельно. Синтаксис
.RW+ personal/USER/ = @userlist
Где «личное» может быть все, что вам нравится (но не может быть пустым), а часть «
/USER/
» необходимо (включая обеизывые скольжения).Пользователь "
alice
" (если она в пользовательском чисе) может затем нажать в любые ветви внутриpersonal/alice/
.
Это означает, что она может протолкнуть генеракодицетагкод и генеракодицетагкод, но не генеракодицетагкод.(Фон: во время выполнения компонент «
personal/alice/foo
» будет заменен на имя вызывающего пользователя. Доступ определяется правой стороны, как обычно).Это означает, что когда вы ищете «Есть ли макрос, который расширится к имени пользователям?»,
personal/alice/bar
будет приведен пример «макроса», расходующегося на имя пользователя.
Внутренние идентичны их эквивалентным инструкциям по сборке, и вы должны использовать их, если это возможно, - компилятор знает, чтобы напрямую переводить их, нет разницы в производительности.
Используйте внутреннюю.
Использование сборки обычно приводит к нескольким дням безостановочной работы, только чтобы узнать, что компилятор превосходит вашу лучшую производительность на 5%. (5%, если вы действительно хороши;, скорее всего, 30%.)