java while循环下载时如何计算Mbit/s

标签 java performance download

我有这个 while loop 下载文件

while ((val = bis.read(buffer, 0, 1024)) > 0) {
   out.write(buffer, 0, val);
   fileSize -= val;
   if (fileSize < 1024) {
   val = (int) fileSize;
}

尝试弄清楚如何像许多速度网站那样显示 Mbit/s。(链接)
http://www.speedtest.net/ .

希望测量值留在 while 循环中,但我有
看到使用 on-minute-threads 触发的例子,但我不知道..

不知道数据量,还是数据一直是1024。
这就是我认为的问题
有什么帮助吗?

最佳答案

我可能错了一两个数量级,大致思路如下:

long start = System.nanoTime();
long totalRead = 0;
final double NANOS_PER_SECOND = 1000000000.0;
final double BYTES_PER_MIB = 1024 * 1024;

while ((val = bis.read(buffer, 0, 1024)) > 0) {
    //...
    totalRead += val;
    double speedInMBps = NANOS_PER_SECOND / BYTES_PER_MIB * totalRead / (System.nanoTime() - start + 1);
    double speedInMbps = speed * 8;
}

请注意,这计算的是从一开始的平均速度,而不是当前速度。

关于java while循环下载时如何计算Mbit/s,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8155672/

相关文章:

java - hibernate 级联删除不起作用

javascript - AJAX和Javascript缓存效率问题

ios - 通过 FTP 协议(protocol)从 iPhone 上传/下载文件

适用于 Windows 的 Java Compact 配置文件(如何?)

java - 使用反射来了解字段和相对值

java批量插入方法

ios - 如何使用 NSCache 并从 Url 下载图像并在 CollectionViewCell 中显示图像?

java - Java中下载文件失败的处理方法

java - 在后台对 Eddystone Beacon 使用react

Java 64 位比 32 位版本使用更多内存