【发布时间】:2011-07-16 08:04:21
【问题描述】:
用 SIMD 指令重写 memcpy/memcmp/... 在大型软件中有意义吗?
如果是这样,为什么 GCC 默认不为这些库函数生成 SIMD 指令?
另外,SIMD 是否可以改进其他功能?
【问题讨论】:
-
这取决于您使用的操作系统和编译器库。例如。 Mac OS X 已经有了 SIMD 优化的 memcpy et al。此外,英特尔的 ICC 生成的内联 memcpy 比您可能在库中实现的任何东西都要快。
-
@Paul:
memcpy实际上是 SSE 内在函数的最坏情况,因为 SSE 不能用于边缘情况。这些编译器会为strlen和memchr发出SIMD 代码吗? -
@Ben:我刚刚检查了 ICC 12 - memcpy 和 strlen 都发出内联 SSE 代码,strchr 是一个库函数,看起来只是直接标量代码。
标签: performance sse simd