Pergunta

Já fiz alguma codificação ASM in-line para SSE antes e não foi também difícil mesmo para quem não conhece ASM.Mas observo que a MS também fornece intrínsecos envolvendo muitas dessas instruções especiais.

Existe uma diferença específica de desempenho ou algum outro motivo forte para que um seja usado acima do outro?

Repetindo o título, isso cobre especificamente os intrínsecos expostos pelo VC++ 2008 para C++ nativo não gerenciado.

Foi útil?

Solução

Em geral, é melhor usar o Intrinsics - é mais produtivo para o programador e um bom compilador (por exemplo, Intel ICC) fará um trabalho decente de alocação de registro, agendamento de instruções etc. O compilador da Microsoft não é tão bom a esse respeito, mas provavelmente ainda Faz um trabalho razoável - você sempre pode mudar para a ICC mais tarde, se precisar obter melhor desempenho.

Outras dicas

Não há assembly embutido no Visual C++ para x64.Intrínsecos também podem ser usados ​​em x64.Se você quiser portar seu código para x64, terá que usar intrínsecos.

Os intrínsecos são idênticos às suas instruções equivalentes de montagem e você deve usá -las se possível - o compilador sabe traduzi -las diretamente, não há diferença de desempenho.

Use intrínsecos.

O uso da montagem geralmente resulta em vários dias de trabalho ininterrupto, apenas para descobrir que o compilador supera o seu melhor desempenho em 5%. (5% se você é realmente bom; provavelmente 30%.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top