请问C++手动复制内存和使用memoryCopy相比会不会更慢?

下列2种方法复制一个数组:
1.destAry[0] = srcAry[0];destAry[1] = srcAry[1];destAry[2] = srcAry[2];
2.memcpy(目标数组, 源数组, 3);
使用第一种会不会比第二种更慢?(我需要短时间内做许多类似的复制操作,每次都复制3个数)

拉丁的传说
浏览 435回答 3
3回答

忽然笑

在确保效果相同不会出bug的前提下,1更快。原因是不使用for循环(memcpy里要用,可以看源码),减少了条件判断这一步骤,而分支指令从硬件层面来看开销是很大的。

撒科打诨

少了没区别,多了会有区别,memcpy的底层实现是未知的,硬件上应该会用到DMA,速度要比CPU搬运数据快的多。DMA就是数据搬运工,平常的程序导入内存,文件流都会用到,而你普通赋值肯定不会用到。

繁华开满天机

实际上 第一个办法比第二个办法更快memcpy 的方式跟你第一个是一样的,但是多了函数调用的开销,所有第一个更快实际上 当你开启 release 模式后,第一个和第二个的调用速度是一样的建议使用memcpy,第一个办法会降低可读性
打开App,查看更多内容
随时随地看视频慕课网APP