为什么FileInputStream这么慢?

时间:2017-05-27 12:07:47

标签: java linux inputstream

我正在使用RHEL7

我正在处理一个应该从外部加载大量数据的应用程序。我有ramdisk存储在RAM内,应该非常快速地读取。我以两种方式访问​​它:

  1. FileInputStream

    public static void main(String [] args){
        try(InputStream fis = new FileInputStream(new File("/mnt/ramdisk/file"))
             BufferedReader r = new BufferedReader(new InputStreamReader(fis))){
    
             while(//till the end of stream
                   ){
                 byte[] buffer = new byte[_some_size_];
                 r.read(buffer);
                 //Do something useful
             }
    }
    
  2. 通读System.incat ramdisk/file | java -cp my.jar com.test.Main

    The same as 1, but the stream is System.in.
    
  3. 第二种方式更快。在我的机器上工作的速度比第一个快7倍。

    有人可以解释性能差异吗?我想了解它。

0 个答案:

没有答案