matlab plv,性能 – Matlab tic toc精度

这是一个关于时间的

matlab’s doc,在matlab中测量的时间是多久.我们可以看到“tic和toc [offer]最高的准确性和最可预测的行为”.我认为这是有效的声明.

在这里观察到的性能下降并不是由于对经过时间的不良测量,而是与使用imshow或drawow功能无关.我会认为它与缓存系统有关.

下图显示了四次测试的结果,每个测试都有自己的tic / toc基线测量(绘制为蓝色)进行100次迭代.绿线显示在不同条件下的表现:

(1) for ii=1:100

t = tic; %single tic/toc

fps(ii,2) = 1./toc(t);

rand(1000); %extra function outside tic/toc

end

如您的问题所述,尽管兰特在tic / toc块之外,我们可以观察到每秒较慢的帧(FPS;我会说30%).额外的功能可以是任何类型(plot,surf,imshow,sum),您将始终观察到性能下降.

(2) for ii=1:100

t = tic; %first tic/toc

fps(ii,2) = 1./toc(t);

t = tic; %second tic/toc

fps(ii,2) = 1./toc(t);

rand(1000); %extra function outside tic/toc

end

在第二个子图中,tic / toc块重复两次.因此,fps测量被执行两次,并且仅保留第二个测量.我们看到性能下降不再存在 – 就像第一个tic / toc呼叫准备第二个(热身).我在缓存方面解释这一点:执行指令和/或数据,然后保存在低级别的内存中 – 第二次调用更快.

(3) for ii=1:100

t = tic; %first tic/toc

fps(ii,2) = 1./toc(t);

for ij = 1:10000 %10,000 extra tic/toc

tic;

tmp = toc;

end

end

第三个子图在单个调用场景中使用10,000个tic / toc作为额外的功能.你可以看到性能几乎相同.该子图中的整组数据/指令仅与tic / toc相关,再次与快速缓存访问相关.

(4) for ii=1:100 %first tic/toc block

t = tic;

fps(ii,1) = 1./toc(t);

end

for ii=1:100 %second tic/toc block

t = tic;

fps(ii,2) = 1./toc(t);

end

最后,第四个子图显示了两个连续的tic / toc调用块.我们可以看到第二个表现比第一个更好(预热效果).

这里显示的整体模式与imshow无关,不依赖于JIT的加速度,而仅取决于对特定功能的连续调用.我在缓存方面解释了这一点,但是我缺乏某种形式的证据.

这是地块

和代码

%% EXTRA FUNCTION (single call)

fps = zeros(2, 100);

% first case: 100 tic/toc

for ii=1:100

t = tic;

fps(ii,1) = 1./toc(t);

end

%second case: 100 tic/toc + additional function

for ii=1:100

t = tic;

fps(ii,2) = 1./toc(t);

% graph or scalar functions (uncomment to test)

%drawnow;

%plot(1:10)

rand(1000);

%ones(1000, 1000);

%sum(1:1000000);

%diff(1:1000000);

end

h = figure('Color','w','Position',[10 10 600 800]);

subplot(4,1,1);

plot(fps); legend({'tic/toc only','extra function'});

ylabel('FPS');

title('extra function, single call','FontSize',14);

set(gca,'FontSize',14, 'YLim', [0 3.5e5]);

%% EXTRA FUNCTION (double call)

fps = zeros(2, 100);

% first case: 100 tic/toc

for ii=1:100

t = tic;

fps(ii,1) = 1./toc(t);

end

%second case: 100 tic/toc + additional function (except tic/toc)

for ii=1:100

%first call

t = tic;

fps(ii,2) = 1./toc(t);

%second call (identical to first)

t = tic;

fps(ii,2) = 1./toc(t);

rand(1000);

end

subplot(4,1,2);

plot(fps); legend({'tic/toc only','extra function'});

ylabel('FPS');

title('extra function, double call','FontSize',14);

set(gca,'FontSize',14, 'YLim', [0 3.5e5]);

%% EXTRA FUNCTION (double call)

fps = zeros(2, 100);

% first case: 100 tic/toc

for ii=1:100

t = tic;

fps(ii,1) = 1./toc(t);

end

%second case: 100 tic/toc + 10000 tic/toc

for ii=1:100

t = tic;

fps(ii,2) = 1./toc(t);

for ij = 1:10000

tic;

tmp = toc;

end

end

subplot(4,1,3);

plot(fps); legend({'tic/toc','extra tic/toc'});

ylabel('FPS');

title('Identical function calls','FontSize',14);

set(gca,'FontSize',14, 'YLim', [0 3.5e5]);

%% TIC/TOC call twice

fps = zeros(2, 100);

% first case: 100 tic/toc

for ii=1:100

t = tic;

fps(ii,1) = 1./toc(t);

end

for ii=1:100

t = tic;

fps(ii,2) = 1./toc(t);

end

subplot(4,1,4);

plot(fps); legend({'tic/toc (1)','tic/toc (2)'});

ylabel('FPS');

title('tic/toc twice','FontSize',14);

set(gca,'FontSize',14, 'YLim', [0 3.5e5]);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值