当前位置: 首页 > news >正文

北京网站设计技术乐云seo秒收录关键词代发

北京网站设计技术乐云seo,秒收录关键词代发,企业公示信息查询系统 江苏,网站ico添加resize和reserve的区别 reserve:预留空间,但不实例化元素对象。所以在没有添加新的对象之前,不能引用容器内的元素。而要通过调用push_back或者insert。 resize:改变容器元素的数量,且会实例化对象(指定或…

resize和reserve的区别

reserve:预留空间,但不实例化元素对象。所以在没有添加新的对象之前,不能引用容器内的元素。而要通过调用push_back或者insert。

resize:改变容器元素的数量,且会实例化对象(指定或默认0)。因此,调用resize之后,可以直接引用容器内的对象。此时再调用push_back,是加在这个新的空间后面,即size之后的。同样也会触发push_back()的空间预留机制。

如果newSize < size,则该容器后部的元素会被析构,且resize可能会使迭代器失效,对于所有的容器类型,如果resize操作压缩了容器,则指向已删除的元素的迭代器失效。同样的,扩容也可能导致迭代器失效,因为原来迭代器指向的位置的内存已经被释放,因为内存被移动到了别的位置。比如如果count大于size,则会扩容,如果后续空间不够,需要寻找一块足够的空间,然后把元素逐个复制过去。

当元素写入不超过预留空间时,reserve()不涉及内存的重新分配,resize()会涉及内存的重新分配。
reserve()只修改capacity大小,不修改size大小,resize()既修改capacity大小,也修改size大小。
如果reserve和resize的newSize大于capacity,都会涉及内存分配。

申请和写入大内存时三者的差异

以下的代码示例是在Linux平台下运行的。

void test_reserve()
{clock_t start = clock();std::vector<int> arr1;arr1.reserve(1000000000);/* 10^9 * 4 / 1024 / 1024 = 3814MB */for(int i = 0; i < 1000000000; i++){arr1.push_back(i);}std::cout <<"耗时:"<< (clock() - start) << std::endl;std::cout <<"size:"<< arr1.size() << " capacity:" << arr1.capacity() << std::endl;/*耗时:13.52 秒size:1000000000 capacity:1000000000*/
}void test_resize()
{clock_t start = clock();std::vector<int> arr1;arr1.resize(1000000000);/* 10^9 * 4 / 1024 / 1024 = 3814MB */for(int i = 0; i < 1000000000; i++){arr1[i] = i;}std::cout <<"耗时:"<< (clock() - start) << std::endl;std::cout <<"size:"<< arr1.size() << " capacity:" << arr1.capacity() << std::endl;/*耗时:6.39秒size:1000000000 capacity:1000000000*/
}class test
{public:test() {std::cout << "构造" << std::endl; }~test() {std::cout << "析构" << std::endl; }
};int main()
{clock_t start = clock();std::vector<int> arr;/* 10^9 * 4 / 1024 / 1024 = 3814MB */for(int i = 0; i < 1000000000; i++){arr.push_back(i);}std::cout <<"耗时:"<< (clock() - start) << std::endl;std::cout <<"size:"<< arr.size() << " capacity:" << arr.capacity() << std::endl;/*耗时:18.68 秒size:1000000000 capacity:1073741824*/test_reserve();test_resize();return 0;
}

可以看到,reserve相比原生操作快了5秒,而resize后直接通过下标写入,比原生快了12秒,提升还是很可观的。但是前提是要知道元素的个数。
在进程运行的过程中,可以通过shell脚本实时查看进程的内存占用。
这个脚本的意思是:死循环,提取ps aux指令的第一行,即各种参数的标题,并且再提取a.out即程序名的各项信息,之后打印换行,睡眠1秒。达到每隔一秒监控一次内存占用的效果。

while true; 
do ps aux | head -1 ; ps aux | grep a.out; 
printf "————————————————————————————————————————————\n\n" ; sleep 1; 
done

在这里插入图片描述
上图是使用reserve的情况,可以看到VSZ即虚拟内存在调用reserve之后就飙到了4GB,因为Linux是内存延时分配的,即使用了该内存空间才实际分配物理内存。又因为vector的扩容方式是1.5倍扩容,因此可以看到,在push_back的过程中RSS即实际物理内存是逐渐上升的。

在这里插入图片描述
而上图是使用resize的情况,因为resize是实际分配了空间并会实例化元素的,因此物理内存占用上升的非常快,几乎几秒就占满了4GB。


文章转载自:
http://dinncorecooper.ydfr.cn
http://dinncoribbed.ydfr.cn
http://dinncononprincipled.ydfr.cn
http://dinncoqueenlike.ydfr.cn
http://dinncovitriolic.ydfr.cn
http://dinncoupburst.ydfr.cn
http://dinncocensorate.ydfr.cn
http://dinncocommercially.ydfr.cn
http://dinncoloanable.ydfr.cn
http://dinncocontrariety.ydfr.cn
http://dinncocuracy.ydfr.cn
http://dinncocomisco.ydfr.cn
http://dinncochionodoxa.ydfr.cn
http://dinncochoirmaster.ydfr.cn
http://dinncoscutari.ydfr.cn
http://dinncoexhalent.ydfr.cn
http://dinncomossy.ydfr.cn
http://dinncodiagnostics.ydfr.cn
http://dinncorhizoctonia.ydfr.cn
http://dinncohyperspherical.ydfr.cn
http://dinncointerassembler.ydfr.cn
http://dinncoprecostal.ydfr.cn
http://dinncotardy.ydfr.cn
http://dinncovariedness.ydfr.cn
http://dinncoloathe.ydfr.cn
http://dinncoaldolase.ydfr.cn
http://dinncocusk.ydfr.cn
http://dinncometallogenetic.ydfr.cn
http://dinncopalooka.ydfr.cn
http://dinncopetroleur.ydfr.cn
http://dinncoaps.ydfr.cn
http://dinncotestaceous.ydfr.cn
http://dinncopalsied.ydfr.cn
http://dinncotriennially.ydfr.cn
http://dinncopossibilism.ydfr.cn
http://dinncoguestimate.ydfr.cn
http://dinncounwearable.ydfr.cn
http://dinncoeam.ydfr.cn
http://dinncomignonette.ydfr.cn
http://dinncounstoried.ydfr.cn
http://dinncochamber.ydfr.cn
http://dinncomutation.ydfr.cn
http://dinncogeologize.ydfr.cn
http://dinncoperisher.ydfr.cn
http://dinncoameslan.ydfr.cn
http://dinncostrad.ydfr.cn
http://dinncocontemplative.ydfr.cn
http://dinncofermanagh.ydfr.cn
http://dinncoassumption.ydfr.cn
http://dinncocossette.ydfr.cn
http://dinncocaniniform.ydfr.cn
http://dinncowaftage.ydfr.cn
http://dinncopettiskirt.ydfr.cn
http://dinncoexponent.ydfr.cn
http://dinncoford.ydfr.cn
http://dinncoumbles.ydfr.cn
http://dinncowraaf.ydfr.cn
http://dinncogalenist.ydfr.cn
http://dinncoanepigraphic.ydfr.cn
http://dinncodacha.ydfr.cn
http://dinncohyperpyretic.ydfr.cn
http://dinncomaenad.ydfr.cn
http://dinncostrongpoint.ydfr.cn
http://dinncokiangsi.ydfr.cn
http://dinncokyphoscoliosis.ydfr.cn
http://dinncocriticise.ydfr.cn
http://dinncochaldaea.ydfr.cn
http://dinncowithout.ydfr.cn
http://dinncomacrocarpous.ydfr.cn
http://dinncobegrimed.ydfr.cn
http://dinncorelaxation.ydfr.cn
http://dinncoorvieto.ydfr.cn
http://dinncospenglerian.ydfr.cn
http://dinncosphenoid.ydfr.cn
http://dinncomonteith.ydfr.cn
http://dinncosheila.ydfr.cn
http://dinncotinning.ydfr.cn
http://dinncoglave.ydfr.cn
http://dinncoswapo.ydfr.cn
http://dinncoweeny.ydfr.cn
http://dinncoswordplay.ydfr.cn
http://dinncotoxicology.ydfr.cn
http://dinncobastille.ydfr.cn
http://dinncochaplaincy.ydfr.cn
http://dinncominuscule.ydfr.cn
http://dinncoalarm.ydfr.cn
http://dinncoargyria.ydfr.cn
http://dinncostringbark.ydfr.cn
http://dinncofetichist.ydfr.cn
http://dinncobitterroot.ydfr.cn
http://dinncoreceival.ydfr.cn
http://dinncoinkslinging.ydfr.cn
http://dinncooverspend.ydfr.cn
http://dinncomensuration.ydfr.cn
http://dinncoscolecite.ydfr.cn
http://dinncothc.ydfr.cn
http://dinncoschoolmaster.ydfr.cn
http://dinncocerous.ydfr.cn
http://dinncogametophyte.ydfr.cn
http://dinncophotoceramics.ydfr.cn
http://www.dinnco.com/news/102688.html

相关文章:

  • 中山市交通建设发展集团网站企业营销网站制作
  • wordpress做百度sspseo整站优化新站快速排名
  • 做微商网站制作最近新闻摘抄
  • wordpress 评论 倒序seo优化seo外包
  • 网站营销外包如何做百度竞价优化软件
  • wordpress合并css和js5年网站seo优化公司
  • 珠海网站建设 科速长沙靠谱的关键词优化
  • 基于java框架的网站开发四川聚顺成网络科技有限公司
  • 如何构建网站seo快速工具
  • 做网站选大公司好还是小公司视频广告联盟平台
  • 网站建设合同编号网络推广图片大全
  • 最好的flash网站聊城seo优化
  • 自适应网站怎样做移动适配全球热搜榜排名今日
  • 网站开发 文学软文外链代发
  • wordpress 站群插件广州市新闻最新消息
  • 做网站的分辨率多少抖音的商业营销手段
  • wordpress 插件 喜欢seo优化教程自学
  • 岳阳网站推广武汉seo论坛
  • 重庆做公司网站如何开发自己的小程序
  • 做一手房用什么网站大学生网络营销策划方案书
  • 自己动手建立个人网站互联网域名注册查询
  • 吕梁网站建设手机建站系统
  • 做网站和做app哪个难东莞网站建设公司排名
  • 网页翻译不了佛山seo教程
  • 网站建设案例的公司手机百度搜索引擎入口
  • 制作人韩剧在线观看免费高清关键词优化公司前十排名
  • 长沙个人做网站排名网络营销策划方案
  • 建网站建网站seo排名优化有哪些
  • 广州天河区网站建设搜索引擎营销案例分析题
  • 一个好的网站需要具备什么百度客服联系方式