凡亿助教-小云
凡事用心,一起进步
打开APP
公司名片
凡亿专栏 | 预分配内存总忘,数组越扩越慢,怎么办
预分配内存总忘,数组越扩越慢,怎么办

写MATLAB循环时经常忘记提前给数组预分配内存,每次循环迭代都在末尾追加新元素,数组越扩越慢,运行时间直接拉长数倍。不用每次手动计算数组总长度,几个轻量方法就能避免动态扩容的性能损耗。

5.png

1. 先定总长度再初始化

提前算出循环的总迭代次数,用zeros或ones直接创建对应大小的空数组。

后续循环直接按索引位置赋值,MATLAB不会反复重新申请内存,运行速度能提升数十倍。

2. 用追加占位符临时存储

实在不确定最终数组长度时,用cell数组先临时存每一步的结果。

循环结束后用cell2mat一次性拼接成完整数组,避免每一步都对数值数组做动态扩容。

3. 开启性能分析器检测

在MATLAB主页打开性能分析器,运行脚本后生成的报告里。

会直接标红所有未预分配、反复扩容的数组位置,精准定位所有拖慢运行速度的代码段。

4. 养成编码小习惯

在循环代码开头,先写数组初始化语句,再写循环逻辑。

不用等写完循环再回头补预分配,从编码顺序上避免遗漏,从根源解决数组越扩越慢的问题。


本文凡亿教育原创文章,转载请注明来源!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论