有什么方法可以衡量程序的 运行 周期吗?

Is there any methods to measure running period of a program?

我做了两个模拟特定系统的程序;一个是我的,另一个是根据期刊(不是我的)复制的。

我先运行

clc;close all;clear all;
tic
for run=1:10000
    result1{run} = runCode1;
end
Time = toc;
result1{10001} = toc/10000;
save('Mine', 'result1');

然后,我运行

clc;close all;clear all;
tic
for run=1:10000
    result2{run} = runMyCode2;
end
Time = toc;
result2{10001} = toc/10000;
save('Others', 'result2');

我比较了两个参数"result1{10001}"和"result2{10001}"。 但是,由于 tic/toc 代表实时,我有点担心。

我必须在同等条件下 运行 两个代码,但现在我按顺序 运行 宁两个代码。 此外,代码分别花费大约 20 小时和 50 小时。 因此,我必须 运行 大约 70 个小时!!!我不能忍受 70 个小时不用电脑。我必须做很多其他事情。但是,如果我 运行 某些东西,例如 IE、chrome、latex、信使、ppt、打印等,它们可能会影响代码的 运行 宁时间。

如何在两个代码之间进行等效条件比较?


我会详细补充一些内容

clc;close all;clear all;
Data = load('RawData');
for monte=1:100
    nextState = Initialize(Data, ...);
    for timeIdx = 1:1000
        currState = EvaluateCurrentState(nextState, Data{timeIdx});
        out{monte,timeIdx} = EvaluatePerformance(currState);
        nextState = updateState(currState); % using the currState, subalgorithms are run.
    end
end

然后,我处理这个 100 x 1000 的单元格数据;求均值、移动均值、绘图等。

从 N=5 开始统计并保持每个 运行 的时间,而不是根据方差决定是否需要更多 运行。无论如何10000可能太多了。

clc;close all;clear all;

N=5;
result1=cell(1,N+2);
tocs1=zeros(1,N);
for run=1:N
    starttime=tic;
    result1{run} = runCode1;
    tocs1(run)=toc(starttime);
end
result1{N+1} = mean(tocs1);
result1{N+2} = std(tocs1);
save('Mine', 'result1','tocs1');