Skip to content
Snippets Groups Projects
Commit caf7854a authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

if the values allow it, avoid floting point math for the current speed

parent 6def0892
No related branches found
No related tags found
No related merge requests found
......@@ -301,10 +301,21 @@ int Curl_pgrsUpdate(struct connectdata *conn)
if(0 == span_ms)
span_ms=1; /* at least one millisecond MUST have passed */
/* Calculate the average speed the last 'countindex' seconds */
data->progress.current_speed = (curl_off_t)
(data->progress.speeder[nowindex]-
data->progress.speeder[checkindex])/((double)span_ms/1000);
/* Calculate the average speed the last 'span_ms' milliseconds */
{
curl_off_t amount = data->progress.speeder[nowindex]-
data->progress.speeder[checkindex];
if(amount > 0xffffffff/1000)
/* the 'amount' value is bigger than would fit in 32 bits if
multiplied with 1000, so we use the double math for this */
data->progress.current_speed = (curl_off_t)
(amount/(span_ms/1000.0));
else
/* the 'amount' value is small enough to fit within 32 bits even
when multiplied with 1000 */
data->progress.current_speed = amount*1000/span_ms;
}
}
else
/* the first second we use the main average */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment