Quelles unités la boucle utilise-t-elle pour la bande passante?


17

curl sur la ligne de commande affiche une progression comme celle-ci:

  % 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

La vitesse affichée dans cet exemple est 47k. mais qu'est ce que ça veut dire? Est-ce:

  • 47 ko, soit 47 * 1024 octets
  • 47 Ko, c'est-à-dire 47 * 1000 octets
  • 47 Ko, c'est-à-dire 47 * 1000 bits (les bits sont souvent utilisés pour mesurer la vitesse)

Et est-ce:

  • par seconde
  • ou par minute?

1
Question similaire pour wget: superuser.com/q/184331/90668
Flimm

Réponses:


14

Quelles unités la boucle utilise-t-elle pour la bande passante?

Selon le code source, c'est kiB per second.


Ici, vous pouvez voir la définition utilise 1024et non1000

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

...

}

Ici, vous pouvez voir que le calcul est effectué en ms, puis divisé par 1000pour obtenir les secondes.

  /* 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
J'ai dû chercher ceci, donc j'espère que cela économise l'effort à quelqu'un: kiB est un kibioctet et vous pouvez rechercher des sites comme celui-ci pour le convertir en d'autres unités.
SteveLambert
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.