Code covered by the BSD License  

Highlights from
Elapsed Timer (print elapsed time)

image thumbnail
from Elapsed Timer (print elapsed time) by Matt Caywood
Simple, useful utility for printing elapsed time and remaining time in a lengthy loop computation.

elapsedtimer
classdef elapsedtimer < handle
%
% Print elapsed time and extrapolate remaining time of a lengthy
% computation. Smarter than tic and toc, but not as complex as the Matlab 
% timer class. Currently there can be only one elapsedtimer running.
%
% Easiest:
%   Before computation: etimer = elapsedtimer;
%   At each step: steptimer(etimer);
%
% Print only every nth step, when computation has many steps, or steps are short:
%   Before computation: etimer = elapsedtimer(n);
%
% When we know there will be 100 steps and we want remaining time displayed:
%   Before computation: etimer = elapsedtimer([],100);
%
% If there are 100 steps but we only want to print every 10th:
%   Before computation: etimer = elapsedtimer(10,100);
%
% Matt Caywood
% version 0.1: published 2010.07.20
% version 0.2: made object-oriented, simplified calling 2010.07.29
% version 0.21: fixed initialization bugs

properties (SetAccess = private)
   tstart = 0;
   step = 0;
   totalsteps = 0;
   modulo = 1;
end 

methods
   function etimer = elapsedtimer(modulo,totalsteps)
       if exist('totalsteps','var'), etimer.totalsteps = totalsteps; else etimer.totalsteps = 0; end
       if exist('modulo','var') && ~isempty(modulo), etimer.modulo = modulo; else etimer.modulo = 1; end
       etimer.tstart = now;
       etimer.step = 0;
   end

   function steptimer(etimer)
       etimer.step = etimer.step + 1;

       if mod(etimer.step,etimer.modulo) == 0
           tnow = now;
           telapsed = tnow - etimer.tstart;
           tstepmean = telapsed / etimer.step;
           tremaining = tstepmean * max(0,etimer.totalsteps - etimer.step);
           
           elapsedstr = datestr(telapsed,13);
           stepmeanstr = datestr(tstepmean,13);

           if etimer.totalsteps > 0
                remainingstr = datestr(tremaining,13);
                fprintf('Elapsed time: %s Time per step: %s Time remaining: %s\n',elapsedstr,stepmeanstr,remainingstr);
           else
                fprintf('Elapsed time: %s Time per step: %s\n',elapsedstr,stepmeanstr);
           end
       end

   end
end

end


Contact us