Sha*_*mer 10 matlab memory-management
我是MATLAB的新手,它不在工作描述中,我被迫接管编写和维护我公司使用的代码的人.生活很艰难.
我接手的人告诉我,他宣称所有的大数据向量都是global
为了节省内存.更具体地说,当一个函数调用另一个函数时,他在传递数据时不会创建数据的副本.
这是真的?我阅读了有效使用内存的策略,它说明了这一点
处理大型数据集时,请注意,如果被调用函数修改了其值,MATLAB将生成输入变量的临时副本.这会暂时使存储阵列所需的内存加倍,这会导致MATLAB在没有足够的内存时生成错误.
它说的内存分配对于数组#Function参数非常相似:
将变量传递给函数时,实际上是将引用传递给变量所代表的数据.只要输入数据不被被调用的函数修改,调用函数中的变量和被调用函数中的变量就指向内存中的相同位置.如果被调用函数修改了输入数据的值,则MATLAB将原始数组的副本复制到内存中的新位置,使用修改后的值进行更新,并将调用函数中的输入变量指向此新数组.
那么使用global
可以更好吗?似乎有点草率地轻率地声明所有大数据global
,而不是确保没有任何代码修改其输入参数.我错了吗?这真的可以改善RAM的使用吗?