内存分配会产生多大开销?-看点

2023-04-07 03:14:25 来源:哔哩哔哩


(资料图片仅供参考)

写c艹的人,似乎都不太愿意new东西出来。大家认为new是开销很大的操作。大家能把结构体放在栈上,一般就不愿意把它放在堆上。即使是不得不放在堆上,不少的项目中也会使用各种各样的内存池来管理这些内存。

如果某个函数需要输出一个结构体作为结果,那么写c艹的人一定会把这个输出结构体放到函数的参数中,让调用方在栈上分配这个结构体,然后把它作为参数传递给函数。写c艹的人孜孜不倦的在函数中添加输出参数,如果可以用输出参数,大家绝不会选择new一个对象然后返回它的unique_ptr,反正我是从来没有见过这种操作。

那么问题来了,我们苦心避免的内存分配开销,到底是多大的一个开销?说实话,我也很好奇。百度了一圈,又谷歌了一圈,都没有找到满意的答案。于是我写了一个简单的程序来进行测试。测试的结果是一对分配+释放操作大约需要150ns左右

测试用的内存分配器用的是windows默认的那个,即微软ucrt里面的分配器,测试程序没有多线程的case。

这个测试中,内存分配的大小和内存释放的时间都是随机的。测试时,每次申请的内存在16字节到256字节之间随机。测试的流程是先分配一万次内存,接下来每次分配内存时随机挑选一个未释放的内存释放。最后释放掉所有内存。也就是说,测试期间大部分时候,保持有一万块已分配但未释放的内存用来保证内存中有足够多的“碎片”。同时还有一个对照组。对照组执行同样的逻辑,但是不会执行内存分配和释放。比较实验组和对照组之间耗时的差值来得到内存分配的净用时。

我会把这个代码扔到github上。见评论区置顶。

标签

汤臣倍健2021年市占率10.3% 稳居行业第一

VDS行业发展空间较大、集中度较低。国内膳食营养补充剂(VDS)发展历史尚短,居民的消费意识和习惯尚未完...

2022-05-22 21:06:33

郴州安仁文旅项目集中开工 总投资1000万元

3月16日,安仁县举行文旅项目集中开工活动,县委书记王洪灿在开工仪式上宣布:湘南起义旧址群——朱毛井...

2022-03-20 15:40:46

2022年郴州计划重点推进文旅项目101个 总投资354亿元

3月16日,我市举行全市文旅项目和城市大提质大融城项目集中开工仪式,市委书记吴巨培宣布项目开工。郴州...

2022-03-20 15:39:41

宿州泗县深入推进文旅融合发展 擦亮城市品牌

近年来,泗县以争创安徽省文化旅游名县为目标,深入推进文旅融合发展,努力擦亮水韵泗州 运河名城城市...

2022-03-20 15:38:59

汽车零部件产业“领头羊” 锦州力争一季度“开门红”

3月16日,记者从锦州汽车零部件产业的领头羊——锦州万得集团获悉,今年前两个月,企业订单充足,正铆足...

2022-03-20 15:37:41

油价或有望冲击“九元”大关 宁波新能源汽车市场如何

新一轮国内成品油调价窗口于3月17日24时开启,油价或有望冲击九元大关。前一天晚上11点,鄞州区不少加油...

2022-03-20 15:34:38

从水塘到“云”端 全国最大高邮鸭养殖基地实现智慧养殖

随着新一代数字技术的蓬勃发展,以新兴技术推动现代化新农村建设正成为助力乡村振兴的重要手段。1个人能...

2022-03-20 15:33:17

淡季不忘引流 京郊民宿市场有望迎来回暖

旅游淡季中的京郊民宿有望成为市场中最先复苏的板块。3月17日,北京商报记者调查发现,虽然正值旅游淡季...

2022-03-20 15:32:01

镇江乡村一二三产业融合发展 闯出“镇江之路”

从烹饪江鲜河豚的个体小饭店到规模化的江岛乡村旅游产业集群,从白兔草莓丁庄葡萄的单个农户种植到茅山...

2022-03-20 15:31:11

总投资30亿元 盐城东台8个重大产业项目相继开工

总投资30亿元的精密电子元器件项目、同益电子项目,总投资10亿元的金利美精密组件项目、天永智能设备项...

2022-03-20 15:30:13
x 广告
x 广告

Copyright  2015-2022 华中粮油网版权所有  备案号:京ICP备12018864号-26   联系邮箱:2 913 236 @qq.com