【发布时间】:2017-12-11 11:41:17
【问题描述】:
我已经看到What is the difference between memmove and memcpy? 中接受的答案指出的差异,它说memmove might be very slightly slower than memcpy。
我们可以通过以下方式实现memmove 的替代方案:分配一个临时缓冲区,然后memcpy 两次(src -> tmp, tmp -> dest)。我的问题是:哪种方式更快,memmove 还是其他方式?
【问题讨论】:
-
这取决于目标机器和实现。
-
复制数据很慢。复制数据 两次 会比较慢。
memmove可能比memcpy慢是因为它能够处理重叠内存,但memmove仍然只复制数据一次。 -
在您对时间感兴趣的平台上对其进行分析。然而,你写出比 memmove 更好的 memmove 的可能性似乎不大。
-
您平台的标准
memmove很可能已经高度优化,所以如果源和目标可能重叠,请使用memmove,不要打扰。如果您确定源和目标永远不会重叠,那么只需使用memcpy。