预先配置
为
而且而
每次循环都增加数据结构大小的循环会对性能和内存使用产生不利影响。反复调整数组大小通常需要MATLAB®花费额外的时间寻找更大的连续内存块,然后将数组移动到这些块中。通常,您可以通过预先分配数组所需的最大空间量来改善代码执行时间。
下面的代码显示了创建标量变量所需的时间,x
,然后再逐渐增大尺寸x
在一个为
循环。
Tic x = 0;为K = 2:10000 x(K) = x(K -1) + 5;结束toc
运行时间为0.301528秒。
如果您预先分配了1 × 1,000,000块内存用于x
并将其初始化为零,那么代码运行得更快,因为不需要为不断增长的数据结构重复重新分配内存。
Tic x = 0 (1,1000000);为K = 2:10000 x(K) = x(K -1) + 5;结束toc
运行时间为0.011938秒。
为你想初始化的数组类型使用适当的预分配函数:
0
对于数值数组字符串
对于字符串数组细胞
对于单元格数组表格
对于表数组
预分配一个非双矩阵
当预先分配一个内存块以保存某种类型的矩阵时双
,避免使用该方法
A = int8(0 (100));
这个语句预先分配了一个100 × 100的矩阵int8
,首先通过创建一个完整的矩阵双
值,然后通过将每个元素转换为int8
.将数组创建为int8
Values节省时间和内存。例如:
A = 0 (100,“int8”);