What units does curl use for bandwidth?

curl on the command-line displays progress like this:

 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 8 1000M 8 85.2M 0 0 57k 0 1:06:13 0:05:38 1:00:35 47k

The speed displayed in this example is 47k. But what does this mean? Is this:

  • 47KiB, that is 47 * 1024 bytes
  • 47kB, that is, 47 * 1000 bytes
  • 47kb, that is, 47 * 1000 bits (bits are often used to measure speed)

And is it:

  • per second
  • or per minute?
2

1 Answer

What units does curl use for bandwidth?

According to the source code it is KiB per second.


Here you can see the definition uses 1024 and not 1000

/* The point of this function would be to return a string of the input data, but never longer than 5 columns (+ one zero byte). Add suffix k, M, G when suitable... */
static char *max5data(curl_off_t bytes, char *max5)
{
#define ONE_KILOBYTE CURL_OFF_T_C(1024)
#define ONE_MEGABYTE (CURL_OFF_T_C(1024) * ONE_KILOBYTE)
#define ONE_GIGABYTE (CURL_OFF_T_C(1024) * ONE_MEGABYTE)
#define ONE_TERABYTE (CURL_OFF_T_C(1024) * ONE_GIGABYTE)
#define ONE_PETABYTE (CURL_OFF_T_C(1024) * ONE_TERABYTE)
...
}

Here you can see the calculation is done in ms and then divided by 1000 to get seconds.

 /* Calculate the average speed the last 'span_ms' milliseconds */ { curl_off_t amount = data->progress.speeder[nowindex]- data->progress.speeder[checkindex]; if(amount > CURL_OFF_T_C(4294967) /* 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) ((double)amount/((double)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*CURL_OFF_T_C(1000)/span_ms; }
2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like