为了
和尽管
循环,逐步增加数据结构的大小,每次都会通过循环对性能和内存使用产生不利影响。反复调整阵列通常需要matlab®花费额外的时间来寻找更大的邻接内存块,然后将数组移动到这些块中。通常,您可以通过preAlating阵列所需的最大空间量来改进代码执行时间。
以下代码显示创建标量变量所需的时间量,X
,然后逐渐增加大小X
在一个为了
环形。
Tic x = 0;k = 2:1000000 x(k)= x(k-1)+ 5;结束TOC.
经过时间为0.301528秒。
如果您预先利用1,000,000块内存块X
并将其初始化为零,然后代码运行得更快,因为无需重复重新分配越来越多的数据结构内存。
Tic x =零(1,1000000);k = 2:1000000 x(k)= x(k-1)+ 5;结束TOC.
经过时间为0.011938秒。
使用您要初始化的阵列类型的适当预次级函数:
Zeros.
对于数字阵列
弦
对于字符串阵列
细胞
对于细胞阵列
桌子
对于表阵列
当您预配一块内存块以保存除此之外的某种类型的矩阵双倍的
,避免使用该方法
A = INT8(零(100));
该声明预先释放100×100矩阵INT8.
,首先创建一个完整的矩阵双倍的
值,然后通过将每个元素转换为INT8.
。创建数组为INT8.
值可节省时间和内存。例如:
A =零(100,'INT8');