有没有方法来衡量一个程序的运行周期?

问题描述 投票:-1回答:1

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

我先跑了

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,铬,乳胶,信使,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乘1000的单元格数据;找到平均值,移动平均值,绘图等。

matlab runtime
1个回答
0
投票

使用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');
© www.soinside.com 2019 - 2024. All rights reserved.