MATLAB:“加载”一个快速访问的功能

时间:2018-05-14 15:25:27

标签: matlab performance function memory-management scope

我必须在MATLAB中编写一个相当复杂的函数;我们称之为f。我有一个主程序,比如main.m,它使用了f

如果我要遵循我过去的习惯,每当处理像f这样复杂的函数时,我会将其写在一个单独的文件f.m中,并在我需要时从main.m内调用它。 1}}。但是对于手头的问题,我将不得不使用f *很多*我担心从磁盘读取会减慢我的代码,这已经花了很长时间才能运行。

所以我想问一下这是否是一个有效的问题:即,每当我命令它从f中使用main.m时,MATLAB(比如2017a或更高版本)是否从磁盘读取还是做得更聪明?如果前者是真的,那么在f内多次使用main.m的有效方式(按时间)是什么?如果f是迭代的(即f自称),这些答案中的任何一个都会改变吗?

1 个答案:

答案 0 :(得分:3)

MATLAB在第一次调用时加载并解析函数M文件,并以后续调用不需要再次解析的方式将其存储在内存中。您可以通过在一个干净的MATLAB会话中调用函数f两次,使用tic / toc来计时,来看到这一点:

tic; f(...); toc
tic; f(...); toc

第一次它应该比第二次花费更长的时间。对于非常快速的功能,这个时间差异将非常大。对于需要很多秒的功能,差异可能毫无意义。

您可以使用函数inmem查看内存中加载了哪些函数。

当你致电clear all or clear functions时,功能会从内存中删除(某些其他形式的clear也会删除功能)。避免使用这些。