我想用AsmLib库中的那个覆盖标准memcpy。
文档说:
如果使用asmlib库的“覆盖”版本,则不必修改 程序源代码。您所要做的就是将相应版本的asmlib链接到您的 项目
我所做的是,在调试和发布配置中,我已将“alibcof64o.lib”添加到其他依赖项中。
当我在Debug中编译时,它运行正常,当我查看它将使用SSE指令调用A_memcpy的反汇编时。但是,当我使用Release进行编译时,它不会调用A_memcpy,而是调用常规的。
为什么?
答案 0 :(得分:3)
发布模式包括优化。许多优化会影响memcpy
被调用的方式。
例如,可以在编译时确定要复制的字节数,这不是调用泛型memcpy
实现的大规模优化。同样,如果编译器可以确定源和目标是对齐的,那么除了调用默认的memcpy
之外,还可以进行优化。
无论如何,标准memcpy
已经针对所有平台进行了大量优化,包括使用SSE2,所以我不确定为什么你会烦恼。