Итак, я разрабатываю менеджер загрузок, используя 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);
}
}
Я могуне понять, что не так с моим методом.
Заранее спасибо.