为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C C++
拉丁的传说 2022-03-18 16:11:19
下列2种方法复制一个数组:1.destAry[0] = srcAry[0];destAry[1] = srcAry[1];destAry[2] = srcAry[2];2.memcpy(目标数组, 源数组, 3);使用第一种会不会比第二种更慢?(我需要短时间内做许多类似的复制操作,每次都复制3个数)
查看完整描述

3 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

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

查看完整回答
反对 回复 2022-03-23
?
撒科打诨

TA贡献1934条经验 获得超2个赞

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

查看完整回答
反对 回复 2022-03-23
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

实际上 第一个办法比第二个办法更快
memcpy 的方式跟你第一个是一样的,但是多了函数调用的开销,所有第一个更快
实际上 当你开启 release 模式后,第一个和第二个的调用速度是一样的
建议使用memcpy,第一个办法会降低可读性

查看完整回答
反对 回复 2022-03-23
  • 3 回答
  • 0 关注
  • 434 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号