Skip navigation.
 
mlRe: how to implement ETA
FROM : William Squires
DATE : Tue Jun 03 03:06:04 2008

The following answer assumes you're dealing with a situation in which:

1) You already have a window where you can show the results as a non-
modal window
2) The process has a fixed number of 'units' to process (such as 
records in a database, bytes to d/l, etc...)

Here's my pseudo-code:

// Function prototypes
double Now(void); // this function returns the current time in 
microseconds.
void update(double total_time); // this function updates your window.

// a CONST for converting seconds -> microseconds.
const double conversion_factor = 1e6;

...

int i;
double time;
double delta_t;
double total_t; // total time remaining, NOT a countdown from now!

time = Now(); // seed our process estimate.
total_t = conversion_factor * 60.0 * 60.0; // 1 hr in us; a good 
guesstimate for d/l stuff.
update(total_t);
for (i = 1; i<=num_processing_units; ++i)
  {
  ... // do loop stuff.

  // Get the new delta_t...
  delta_t = (Now() - time);

  // and adjust the estimate based on it, which is (time per 'unit' 
* # 'units' remaining to process).
  total_t = delta_t * ((double) num_processing_units - i);
  update(total_t);
  }
update(0.0);
...

Note that the update() function should take into account the 
granularity of your display units (i.e. if you have something like:

Time remaining: 1 h 23 m

then your granularity is minutes, so ignore any change smaller than a 
minute, so that you don't needlessly update the display if delta_t 
happens to be less than 1e6 * 60 (60,000,000 microseconds = 1 minute).

On Jun 1, 2008, at 7:50 AM, Nick Rogers wrote:

> Hi,
> I want to show time remaining while executing a loop.
> How to go about it?
>
> WIshes,
> nick
> _______________________________________________
>
> Cocoa-dev mailing list (<email_removed>)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
> http://lists.apple.com/mailman/options/cocoa-dev/wsquires%
> 40satx.rr.com
>
> This email sent to <email_removed>

Related mailsAuthorDate
mlhow to implement ETA Nick Rogers Jun 1, 14:50
mlRe: how to implement ETA Jens Alfke Jun 1, 18:09
mlRe: how to implement ETA William Squires Jun 3, 03:06