curl 使用什么单位表示带宽?

Fli*_*imm 22 curl

curl 在命令行上显示这样的进度:

  % 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
Run Code Online (Sandbox Code Playgroud)

本例中显示的速度为47k。但是,这是什么意思?这是:

  • 47KiB,即 47 * 1024 字节
  • 47kB,即47*1000字节
  • 47kb,即47*1000位(位常用于衡量速度)

是吗:

  • 每秒
  • 或每分钟?

Dav*_*ill 18

curl 使用什么单位表示带宽?

根据源代码KiB per second


在这里你可以看到定义使用1024而不是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)

...

}
Run Code Online (Sandbox Code Playgroud)

在这里你可以看到计算是以毫秒为单位完成的,然后除以1000得到秒。

  /* 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;
  }
Run Code Online (Sandbox Code Playgroud)

  • 我不得不查一下这个,所以希望这可以节省一些人的努力:kiB 是一个 [kibibyte](https://en.wikipedia.org/wiki/Kibibyte),你可以搜索网站 [like this](http://en.wikipedia.org/wiki/Kibibyte) /www.convert-me.com/en/convert/data_transfer_rate/?u=kibibyteps&v=108%2C000) 将其转换为其他单位。 (2认同)