为了账号安全,请及时绑定邮箱和手机立即绑定

java文件io性能测试疑问

java文件io性能测试疑问

烙印99 2019-03-14 18:19:05
1 使用file reader测试随机io时间。实验非预期结果:a 当我修改了small.txt文件内容时,下一个循环依然是旧的内容,new,read操作读的是缓存??b 当只执行一次read操作时,执行时间不足1ms,比想象中的快。据说磁盘寻道时间需要几毫秒??@Test public void testSeek() throws IOException { int num = 100; char[] cbuf = new char[12 * 10]; long start = System.currentTimeMillis(); for (int i = 0; i < num; i++) { FileReader fr = new FileReader("small.txt"); // System.out.println(System.currentTimeMillis() - start);        fr.read(cbuf);         fr.close();         System.out.println(new String(cbuf).toString());     }     System.out.println(System.currentTimeMillis() - start); }有人能回答我的问题吗
查看完整描述

3 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

IO操作,磁盘的内容不是直接到java用户的进程中的,这样的话就太慢了。
当java进程请求IO操作的时候,它执行调用把控制权交给内核,内核先会看内核空间的缓冲区内有没有数据,有就直接读出来,没有的话就调用磁盘控制器去磁盘读取数据,读取会先读取到内核空间,然后再到用户进程中。内核这部分操作显然是java api调用native本地方法(也就是C语言或者C++)。

查看完整回答
反对 回复 2019-04-26
  • 3 回答
  • 0 关注
  • 350 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号