comparison Problems/private/timereta.m @ 10:207a6ae9a76f version1.0

(none)
author idamnjanovic
date Mon, 22 Mar 2010 15:06:25 +0000
parents
children
comparison
equal deleted inserted replaced
9:28f2b5fe3483 10:207a6ae9a76f
1 function varargout = timereta(tid,iter,delay)
2 %TIMERETA Estimated remaining time.
3 % S = TIMERETA(TID,ITER) returns the estimated remaining time (in
4 % seconds) for the process associated with timer TID, assuming the
5 % process has completed ITER iterations. Note: the function will exit
6 % with an error if the timer TID does not have an associated number of
7 % iterations (see function TIMERINIT).
8 %
9 % [H,M,S] = TIMERETA(TID,ITER) returns the estimated remaining time in
10 % hours, minutes and seconds.
11 %
12 % TIMERETA(TID,ITER), with no output arguments, prints the estimated
13 % remaining time to the screen. The time is displayed in the format
14 %
15 % TIMERNAME: iteration ITER / ITERNUM, estimated remaining time: HH:MM:SS.SS
16 %
17 % If the timer has no assigned name, the display format changes to
18 %
19 % Iteration ITER / ITERNUM, estimated remaining time: HH:MM:SS.SS
20 %
21 % TIMERETA(TID,ITER,DELAY) only displays the remaining time if the
22 % time elapsed since the previous printout is at least DELAY seconds.
23 %
24 % See also TIMERINIT, TIMERCLEAR.
25
26
27 % Ron Rubinstein
28 % Computer Science Department
29 % Technion, Haifa 32000 Israel
30 % ronrubin@cs
31 %
32 % June 2008
33
34
35 global utiltbx_timer_start_times
36 global utiltbx_timer_iternums
37 global utiltbx_timer_lastiter
38 global utiltbx_time_lastdisp
39 global utiltbx_timer_name
40
41
42 if (tid<1 || tid>length(utiltbx_timer_iternums))
43 error('Unknown timer id');
44 end
45
46 if (utiltbx_timer_iternums(tid) < 0)
47 error('Specified timer does not have an associated number of iterations');
48 end
49
50 % update last reported iteration number
51 utiltbx_timer_lastiter(tid) = iter;
52
53 % compute elapsed time
54 starttime = utiltbx_timer_start_times(tid,:);
55 currtime = clock;
56 timediff = etime(currtime, starttime);
57
58 % total iteration number
59 iternum = utiltbx_timer_iternums(tid);
60
61 % compute eta
62 timeremain = (iternum-iter)*timediff/iter;
63
64 % return eta in seconds
65 if (nargout==1)
66 varargout{1} = timeremain;
67
68 % return eta in hms
69 elseif (nargout==3)
70 [varargout{1}, varargout{2}, varargout{3}] = secs2hms(timeremain);
71
72
73 % print eta
74 elseif (nargout==0)
75
76 % check last display time
77 lastdisptime = utiltbx_time_lastdisp(tid,:);
78 if (nargin>2 && etime(currtime,lastdisptime) < delay)
79 return;
80 end
81
82 % update last display time
83 utiltbx_time_lastdisp(tid,:) = currtime;
84
85 % display timer
86 [hrs,mins,secs] = secs2hms(timeremain);
87 if (isempty(utiltbx_timer_name{tid}))
88 printf('Iteration %d / %d, estimated remaining time: %02d:%02d:%05.2f', iter, iternum, hrs, mins, secs);
89 else
90 timername = utiltbx_timer_name{tid};
91 printf('%s: iteration %d / %d, estimated remaining time: %02d:%02d:%05.2f', timername, iter, iternum, hrs, mins, secs);
92 end
93
94 % invalid number of outputs
95 else
96 error('Invalid number of output arguments');
97 end
98