memcpy的效率和for循环比起来如何?

screen12 2014-01-12 04:36:47
一些内存拷贝函数象memcpy(),还有内存清零函数象memset(),不知它的效率和用for循环比起来如何?高不高?高多少?

假如我申请了一大块内在,总有10000个int,我用for循环把另一块内在的内容一个一个拷贝过来,和用memcpy一条语句拷贝过来,效率相差大不大?
...全文
4665 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-01-13
  • 打赏
  • 举报
回复
http://www.microsoft.com/visualstudio/chs/downloads#d-2010-express 点开Visual C++ 2010 Express下面的语言选‘简体中文’,再点立即安装 再参考 C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\intel\memset.asm C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\intel\memcpy.asm
天椎体 2014-01-13
  • 打赏
  • 举报
回复
还是喜欢无码的
xiaohuh421 2014-01-13
  • 打赏
  • 举报
回复
看源码吧, 最好是能看反汇编. memcpy复制小量数据, 可能会被优化成几次DWORD数据的赋值. 更大的数据会使用循环. 都是循环, 一考虑其它优化的情况下, 速度应该是半斤八两.
翅膀又硬了 2014-01-13
  • 打赏
  • 举报
回复
楼主不用在意这些细节,不要过早优化
vipcxj 2014-01-12
  • 打赏
  • 举报
回复
引用 5 楼 angel_su 的回复:
不用太担心,让编译器优化去,有可能你的for循环就变成调用memcpy,或者memcpy区域很小就转成简单代码,不去调用函数了...
++ 根本用不着关注这种东西,怎么写方便就用哪个。
angel_su 2014-01-12
  • 打赏
  • 举报
回复
不用太担心,让编译器优化去,有可能你的for循环就变成调用memcpy,或者memcpy区域很小就转成简单代码,不去调用函数了...
飞天御剑流 2014-01-12
  • 打赏
  • 举报
回复
当然是memcpy快,memcpy的效率随设计者的不同而不同,但至少不会比for慢,而且由于设计者一般根据平台特性进行了优化,大多数情况下会比for快不少。
Mr. Code 2014-01-12
  • 打赏
  • 举报
回复
循环次数少时,赋值比较快,循环次数多时,memcpy一条语句块拷贝比for循环赋值快。
熊熊大叔 2014-01-12
  • 打赏
  • 举报
回复
memcpy会按系统字长进行对齐优化。比如32bit系统上4字节4字节操作,64bit系统上8字节8字节操作。 如果你的循环中也是按对齐赋值的,就没有区别,如果你的赋值不是对齐,比如是char类型赋值,memcpy会快一些。
vipcxj 2014-01-12
  • 打赏
  • 举报
回复
没区别,我特地测试过~ 当然是release版本,debug版本memXXX确实快不少,但比debug版本毫无意义不是吗?

70,022

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧