下列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里要用,可以看源码),减少了条件判断这一步骤,而分支指令从硬件层面来看开销是很大的。
撒科打诨
TA贡献1934条经验 获得超2个赞
少了没区别,多了会有区别,memcpy的底层实现是未知的,硬件上应该会用到DMA,速度要比CPU搬运数据快的多。DMA就是数据搬运工,平常的程序导入内存,文件流都会用到,而你普通赋值肯定不会用到。
繁华开满天机
TA贡献1816条经验 获得超4个赞
实际上 第一个办法比第二个办法更快
memcpy 的方式跟你第一个是一样的,但是多了函数调用的开销,所有第一个更快
实际上 当你开启 release 模式后,第一个和第二个的调用速度是一样的
建议使用memcpy,第一个办法会降低可读性
- 3 回答
- 0 关注
- 434 浏览
添加回答
举报
0/150
提交
取消
