跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 不懂就问, Java 中文件复制速度的问题。
未分類
14 5 月 2020

不懂就问, Java 中文件复制速度的问题。

不懂就问, Java 中文件复制速度的问题。

資深大佬 : zhao1014 5

代码如下:

public class copy { public static void main(String[] args) throws IOException { long s = System.currentTimeMillis();

    FileInputStream fis = new FileInputStream("C:\Users\ZZY\Desktop\JavaNote\02-Java 语言进阶\原理图\哈希表.png");     FileOutputStream fos = new FileOutputStream("C:\Users\ZZY\Desktop\哈希表.png");      byte[] bytes = new byte[1024];     int len = 0;     while((len = fis.read()) != -1){         fos.write(bytes,0,len);     }           fos.close();     fis.close();      long e =  System.currentTimeMillis();     System.out.println("文件输出耗时" + (e-s) + "毫秒" ); } 

}

字节数组长度设置为 1024 是用时 3295 长度为 10240000 时用时 2942 长度为 1024000000 时用时 3485

图片大小是 52mb

为什么数组长度变大了,读取时间反而是长→短→更长呢?

大佬有話說 (12)

  • 主 資深大佬 : zhao1014

    格式乱了不好意思,将就看下

  • 資深大佬 : misaka19000

    也许是超过了磁盘或者内存或者 CPU 的缓存或者超过了磁盘或者 CPU 的快大小

  • 資深大佬 : xupefei

    一个簇是 4096 字节。
    1024 的 buffer 在没有 read ahead 的时候是浪费磁盘 IO 。
    主多试几个 4096 的倍数?

  • 資深大佬 : xupefei

    我仔细看了看代码,fis.read 每次读一个字节,你设置的 buffer 大小有意义吗

  • 資深大佬 : whitev2

    Files.copy() 不香么?

  • 主 資深大佬 : zhao1014

    @xupefei 新手上路,刚刚学到这里

  • 主 資深大佬 : zhao1014

    @whitev2 就是不太理解为什么会这样

  • 主 資深大佬 : zhao1014

    @xupefei 我没注意!太脑瘫了。。

  • 主 資深大佬 : zhao1014

    @xupefei 我把代码改了,1024 时用时 8 毫秒,
    102400000 用时 175 毫秒,你说的簇我还不太懂应该是我没学到的地方,我查查资料学习一下。谢谢回答!

  • 主 資深大佬 : zhao1014

    @xupefei 测试 4096 和 409600000 的时候也是大的字节数组读写的速度慢,但是 4096 比 1024 快很多,40960 比 4096 快一点,数组过大读写速度反而会慢了,不太理解为什么。

  • 資深大佬 : doudouwu

    @zhao1014 你得先确定你这样能把图片 copy 到另一个文件再确定其他的

  • 資深大佬 : doudouwu

    瞎了,没看到更正

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具