内存申请和数据放入内存 哪个消耗时间多

japt88_115656292 2014-08-11 04:01:00
谁能告诉下,最好能有测试代码。
...全文
378 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
rizhaolutong 2014-08-16
  • 打赏
  • 举报
回复
内存申请的时候本身会初始化一个值,这个值可能是随机的。也就是内存分配函数执行的时间应该包含有数据的初始化时间,这是其一; 其二,内存区不同,分配和拷贝数据的时间也就不同,就像楼上说的堆和栈就是典型的不同。比较应该在同一个存储区上应该才有意义。 其三,内存分配函数和时间拷贝函数的选择应该也会影响到时间,比如,malloc 和new 就不一样,memset memcpy 或者直接使用[]赋值执行的时间也是不一样的。楼主有兴趣的话可以自己测试一下,看看时间是否有区别。 其四,考虑到不同编译器执行的优化,也可能会在执行效率上有区别。 我觉得内存申请会消耗系统时间,但与内存拷贝相比应该在数量级上有个平衡点,到拷贝数量在一定范围内,内存分配相对会比较耗时,但到超过一定数量级,内存拷贝时间会大于内存分配的时间。 简单的一个例子 int * p = (int *)malloc(1000000*sizeof(int)); for(int i =0; i < 100000;i++) p[i] = i; 以上个人观点,不知正确与否,权当抛砖引玉,若有错误,请当指出。
FeelTouch Labs 2014-08-14
  • 打赏
  • 举报
回复
嗯,可以试试
japt88_115656292 2014-08-14
  • 打赏
  • 举报
回复
引用 2 楼 FENGQIYUNRAN 的回复:
内存申请:静态区,堆,栈;一般来说栈比堆快很多。 举例栈分配与栈数据存入,反汇编: 栈分配:int count;无显示 栈数据存入:count=8;=》mov dword ptr [count],1 这说明栈分配还是应快于栈数据存入吧,实际栈分配也需要add sep count; 反汇编知识欠缺,等高手!用代码很难真正体现时间的快慢,干扰太多。
是否可以这样测试? 第一次 int count;N次 第二次 int count;N次 count=8;;N次 当第二次减去第一次的时间就是放入内存时间?
FeelTouch Labs 2014-08-11
  • 打赏
  • 举报
回复
内存申请:静态区,堆,栈;一般来说栈比堆快很多。 举例栈分配与栈数据存入,反汇编: 栈分配:int count;无显示 栈数据存入:count=8;=》mov dword ptr [count],1 这说明栈分配还是应快于栈数据存入吧,实际栈分配也需要add sep count; 反汇编知识欠缺,等高手!用代码很难真正体现时间的快慢,干扰太多。
青松2 2014-08-11
  • 打赏
  • 举报
回复
自己写一个很难吗? 这点功夫都不愿意下,还是别搞IT了

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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