Curl has had the ETA algorithm problem solved for quite some time.
Roughly speaking, you keep a running average of the rate; if the rate stays constant, you remove the passed time since last-sample. Else, the ETA will be adjusted to match the running average (higher-than-average rate: ETA jumps down; lower-than-average rate: ETA jumps up).
Over a relatively short period of time, this becomes shockingly precise. Even if we only kept the running average from execution time, it would quickly become great.
Curl has had the ETA algorithm problem solved for quite some time.
Roughly speaking, you keep a running average of the rate; if the rate stays constant, you remove the passed time since last-sample. Else, the ETA will be adjusted to match the running average (higher-than-average rate: ETA jumps down; lower-than-average rate: ETA jumps up).
Over a relatively short period of time, this becomes shockingly precise. Even if we only kept the running average from execution time, it would quickly become great.