我知道`memmove`和`memcpy`的区别在于`memmove`能处理内存重叠的情况。我查看了`libgcc`中的实现,并从英特尔网站获得了这篇文章[memcpy性能]。
在`libgcc`中,`memmove`与`memcpy`类似,两者都逐字节复制,所以即使经过优化,性能也应该几乎相同。
有人测量了这一点,并得到了这篇文章memcopy、memmove和速度超过安全性。虽然我不认为`memmove`比`memcpy`更快,但至少在英特尔平台上不应该有太大的差异。
因此,在什么平台上以及如何,`memcpy`可以显着快于`memmove`,如果没有,为什么提供两个类似的函数而导致大量错误。
编辑:我不是在询问`memmove`和`memcpy`的区别,我知道`memmove`可以处理重叠问题。问题是是否真的有任何平台,`memcpy`比`memmove`快?
在`libgcc`中,`memmove`与`memcpy`类似,两者都逐字节复制,所以即使经过优化,性能也应该几乎相同。
有人测量了这一点,并得到了这篇文章memcopy、memmove和速度超过安全性。虽然我不认为`memmove`比`memcpy`更快,但至少在英特尔平台上不应该有太大的差异。
因此,在什么平台上以及如何,`memcpy`可以显着快于`memmove`,如果没有,为什么提供两个类似的函数而导致大量错误。
编辑:我不是在询问`memmove`和`memcpy`的区别,我知道`memmove`可以处理重叠问题。问题是是否真的有任何平台,`memcpy`比`memmove`快?
memcpy
和memmove
的问题了(请参见右侧的“相关”栏)。你确定你的问题没有被其中一个覆盖吗? - Oliver Charlesworth</讽刺>
- jalf