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