Unit apa yang digunakan curl untuk bandwidth?


17

curl pada command-line menampilkan progres seperti ini:

  % 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

Kecepatan yang ditampilkan dalam contoh ini adalah 47k. Tapi apa artinya ini? Apakah ini:

  • 47kiB, yaitu 47 * 1024 byte
  • 47kB, yaitu, 47 * 1000 byte
  • 47kb, yaitu, 47 * 1000 bit (bit sering digunakan untuk mengukur kecepatan)

Dan apakah itu:

  • per detik
  • atau per menit?

1
Pertanyaan serupa untuk wget: superuser.com/q/184331/90668
Flimm

Jawaban:


14

Unit apa yang digunakan curl untuk bandwidth?

Menurut kode sumber itu kiB per second.


Di sini Anda dapat melihat penggunaan definisi 1024dan tidak1000

/* 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)

...

}

Di sini Anda dapat melihat perhitungan dilakukan dalam ms dan kemudian dibagi dengan 1000untuk mendapatkan detik.

  /* 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;
  }

1
Saya harus melihat ini, jadi semoga ini menyelamatkan seseorang dari upaya: kiB adalah kibibyte dan Anda dapat mencari situs seperti ini untuk mengubahnya ke unit lain.
SteveLambert
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.