Измерение скорости загрузки при использовании HttpURLConnection Java - PullRequest
0 голосов
/ 29 мая 2018

Итак, я разрабатываю менеджер загрузок, используя java, мне нужно показать скорость загрузки пользователю.
ниже приведен код, который я использовал для определения скорости загрузки в КБ / с, но я недумаю, что он измеряет скорость загрузки правильно.он измеряет мою скорость загрузки довольно неточно от 5 КБ / с до 200000 КБ / с, что странно, моя реальная скорость загрузки составляет приблизительно 500 КБ / с.
MAX_BUFFER_SIZE - 16384.

   while (status == CURRENT) {
     /* Size buffer according to how much of the
        file is left to download. */
     byte buffer[];
     if (sizeOfFile - downloadedSize > MAX_BUFFER_SIZE) {
         buffer = new byte[MAX_BUFFER_SIZE];
     } else {
         buffer = new byte[sizeOfFile - downloadedSize];
     }

     // Read from server into buffer and measuring download speed.
     Long t1 = System.nanoTime();
     int read = stream.read(buffer);
     Long t2 = System.nanoTime();
     downloadSpeed = ((double) read / (double)(t2 - t1)) * 1000000;
     System.out.println(downloadSpeed);
     if (read == -1)
         break;

     // Write buffer to file.
     file.write(buffer, 0, read);
     downloadedSize += read;
     publish(downloadedSize);
     while (status == PAUSED) {
         Thread.sleep(1);
     }

 }

Я могуне понять, что не так с моим методом.

Заранее спасибо.

1 Ответ

0 голосов
/ 31 мая 2018

довольно хорошая альтернатива - рассчитать скорость загрузки после определенного количества циклов while.например, в случае моей программы после 30 пока скорость загрузки циклов показывается пользователю с помощью формулы (размер (байты) / время (нс) * 10 ^ 6) в КБ / с.

...