我以前为 SSE 做过一些内联 ASM 编码,即使对于不了解 ASM 的人来说也不是太难。但我注意到 MS 还提供了包含许多此类特殊指令的内在函数。
是否存在特定的性能差异,或者有任何其他强有力的理由为什么应该在另一个之上使用一个?
重复标题,这是专门介绍 VC++ 2008 为非托管、本机 C++ 公开的内在函数。
我以前为 SSE 做过一些内联 ASM 编码,即使对于不了解 ASM 的人来说也不是太难。但我注意到 MS 还提供了包含许多此类特殊指令的内在函数。
是否存在特定的性能差异,或者有任何其他强有力的理由为什么应该在另一个之上使用一个?
重复标题,这是专门介绍 VC++ 2008 为非托管、本机 C++ 公开的内在函数。
Visual C++ for x64 中没有内联汇编。内在函数也可以在 x64 上使用。如果您想将代码移植到 x64,则必须使用内部函数。
一般来说,最好使用内在函数——它对程序员来说更有效率,一个好的编译器(例如英特尔 ICC)将在寄存器分配、指令调度等方面做得很好。微软编译器在这方面没有那么好,但它可能仍然做得很合理 - 如果您需要获得更好的性能,您可以随时切换到 ICC。
内在函数与其等效的汇编指令相同,您应该尽可能使用它们 - 编译器知道直接翻译它们,没有性能差异。
使用内在函数。
使用汇编通常会导致几天的不间断工作,结果却发现编译器比您的最佳性能高出 5%。(如果你真的很好,5%;很可能是 30%。)