具有不同名称Matlab的相同功能的执行时间不同

时间:2015-03-18 16:14:04

标签: matlab

假设我在Matlab中有一个名为Test的函数,如下所示: function [f, varargout] = Test(I,varargin)

当我在特定输入上运行此函数时,执行时间为0.019661秒。

如果我复制整个函数并将其粘贴到一个新的.m文件中并将其命名为Tes1,我将使用不同的名称来执行相同的函数 函数[f, varargout] = Test1(I,varargin)

现在,当我使用与Test相同的输入运行Test1时,执行时间为0.055111秒。

问题是:原因是什么? 感谢您的回答。

1 个答案:

答案 0 :(得分:2)

这可能是由于各种缓存效应造成的。首先,您的操作可能会缓存该文件,因此第二次读取它会更快。其次,Matlab本身也可以做一些技巧,比如第一次调用函数时运行Just-in-Time编译器,并在下次调用时缓存结果。

比手动编写一些for循环更好的时间函数将使用timeit function。这总是运行该函数几次以“预热缓存”,然后在一个循环中调用它一定次数,具体取决于它需要多少时间(即缓慢功能的少数时间,或者100000次一个非常快的)。它为included in recent versions of Matlab,旧版本为available on the file-exchange