以前に SSE のインライン ASM コーディングを行ったことがありますが、ASM を知らない人でもそれほど難しくはありませんでした。しかし、MS はそのような特別な命令の多くをラップする組み込み関数も提供していることに注意してください。
特定のパフォーマンスの違い、または一方を他方の上に使用する必要があるその他の強い理由はありますか?
タイトルから繰り返しますが、これは VC++ 2008 によって公開されたアンマネージ ネイティブ C++ の組み込み関数を具体的にカバーしています。
以前に SSE のインライン ASM コーディングを行ったことがありますが、ASM を知らない人でもそれほど難しくはありませんでした。しかし、MS はそのような特別な命令の多くをラップする組み込み関数も提供していることに注意してください。
特定のパフォーマンスの違い、または一方を他方の上に使用する必要があるその他の強い理由はありますか?
タイトルから繰り返しますが、これは VC++ 2008 によって公開されたアンマネージ ネイティブ C++ の組み込み関数を具体的にカバーしています。
Visual C++ for x64 にはインライン アセンブリはありません。組み込み関数は x64 でも使用できます。コードを x64 に移植する場合は、組み込み関数を使用する必要があります。
一般に、組み込み関数を使用する方が良いです。プログラマーにとっては生産性が高く、優れたコンパイラー(Intel ICCなど)はレジスタ割り当てや命令スケジューリングなどの適切な仕事をします。Microsoftコンパイラーはこの点ではそれほど優れていませんが、おそらくそれでも合理的な仕事をします-より良いパフォーマンスを得る必要がある場合は、後でいつでもICCに切り替えることができます。
組み込み関数は同等のアセンブリ命令と同じであり、可能であれば使用する必要があります。コンパイラはそれらを直接変換することを認識しており、パフォーマンスの違いはありません。
組み込み関数を使用します。
アセンブリを使用すると、通常、数日間のノンストップ作業が発生し、コンパイラが最高のパフォーマンスを 5% 上回ることがわかります。(あなたが本当に優秀なら5%、おそらく30%)