Измерение скорости загрузки при использовании HttpURLConnection Java
Поэтому я разрабатываю менеджер загрузок с использованием 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 ответ
Довольно хорошая альтернатива - вычислить скорость загрузки после определенного количества циклов while. например, в моем случае программы после 30 пока скорость загрузки циклов показывается пользователю с помощью формулы (размер (байты) / время (нс) * 10^6) в КБ / с.