【发布时间】:2013-11-04 08:10:51
【问题描述】:
我了解memmove 和memcpy 的区别在于memmove 处理内存重叠情况。我检查了 libgcc 中的实现,并从 intel 网站获得了这篇文章 [memcpy performance]。
在libgcc中,memmove与memcpy类似,都是一个字节一个字节,所以优化后性能应该差不多。
有人对此进行了测量并得到了这篇文章memcopy, memmove, and Speed over Safety。即使我认为memmove 不会比memcpy 快,但至少在Intel 平台上应该没有太大区别。
那么在什么平台和方式下,memcpy 可以明显快于memmove,如果没有,为什么提供两个类似的功能而不是只提供memmove,并导致很多错误。
编辑:我不是在问 memmove 和 memcpy 的区别,我知道 memmove 可以处理重叠问题。问题是,真的有任何平台 memcpy 比 memmove 更快吗?
【问题讨论】:
-
memcpy与memmove已经有很多问题(请参阅右侧的“相关”栏)。您确定您的问题尚未涵盖其中之一吗? -
评论者,请阅读整个问题。似乎他知道定义上有什么区别,但实际上似乎没有区别。问题是“在哪些平台上重要?”
-
@Oli Charlesworth,我不是在问 memmove 和 memcpy 的区别,我知道 memmove 可以处理重叠问题。问题是真的有任何平台 memcpy 比 memmove 更快吗?
-
这个问题不是与所列问题的重复!
-
@BoBTFish Reading 将问题标记为重复之前的问题不是这样的方式。您正在妨碍 Progress(tm)。
</sarcasm>
标签: c++ c performance