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
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -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 */
    /* 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)
      (data->progress.speeder[nowindex]-
       data->progress.speeder[checkindex])/((double)span_ms/1000);
          (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 */