我必须在MATLAB中编写一个相当复杂的函数;我们称之为f
。我有一个主程序,比如main.m
,它使用了f
。
如果我要遵循我过去的习惯,每当处理像f
这样复杂的函数时,我会将其写在一个单独的文件f.m
中,并在我需要时从main.m
内调用它。 1}}。但是对于手头的问题,我将不得不使用f
*很多*我担心从磁盘读取会减慢我的代码,这已经花了很长时间才能运行。
所以我想问一下这是否是一个有效的问题:即,每当我命令它从f
中使用main.m
时,MATLAB(比如2017a或更高版本)是否从磁盘读取还是做得更聪明?如果前者是真的,那么在f
内多次使用main.m
的有效方式(按时间)是什么?如果f
是迭代的(即f
自称),这些答案中的任何一个都会改变吗?
答案 0 :(得分:3)
MATLAB在第一次调用时加载并解析函数M文件,并以后续调用不需要再次解析的方式将其存储在内存中。您可以通过在一个干净的MATLAB会话中调用函数f
两次,使用tic
/ toc
来计时,来看到这一点:
tic; f(...); toc
tic; f(...); toc
第一次它应该比第二次花费更长的时间。对于非常快速的功能,这个时间差异将非常大。对于需要很多秒的功能,差异可能毫无意义。
您可以使用函数inmem
查看内存中加载了哪些函数。
当你致电clear all
or clear functions
时,功能会从内存中删除(某些其他形式的clear
也会删除功能)。避免使用这些。