JAVA IO 文件拷贝性能测试-2009-03-13

今天做了java IO 与 NIO 拷贝文件的性能测试,发现NIO并不比IO快多少,甚至有时候比老IO慢。



以下是测试记录(用时毫秒记):

文件1大小:103858393
IO第1次用时 6718
文件1大小:103858393
IO第2次用时 1875
文件1大小:103858393
IO第3次用时 2766
文件1大小:103858393
IO第4次用时 2484
文件1大小:103858393
IO第5次用时 3672
文件1大小:103858393
IO第6次用时 2266
文件1大小:103858393
IO第7次用时 1828
文件1大小:103858393
IO第8次用时 2266
文件1大小:103858393
IO第9次用时 2453
文件1大小:103858393
IO第10次用时 2500
文件1大小:103858393
IO第11次用时 1937
文件1大小:103858393
IO第12次用时 2407
文件1大小:103858393
IO第13次用时 1875
文件1大小:103858393
IO第14次用时 3672
文件1大小:103858393
IO第15次用时 2109
文件1大小:103858393
IO第16次用时 1844
文件1大小:103858393
IO第17次用时 3500
文件1大小:103858393
IO第18次用时 2141
文件1大小:103858393
IO第19次用时 3859
文件1大小:103858393
IO第20次用时 1969

文件2大小:103920648
NIO第1次用时 7390
文件2大小:103920648
NIO第2次用时 1781
文件2大小:103920648
NIO第3次用时 1969
文件2大小:103920648
NIO第4次用时 2297
文件2大小:103920648
NIO第5次用时 1656
文件2大小:103920648
NIO第6次用时 1578
文件2大小:103920648
NIO第7次用时 2203
文件2大小:103920648
NIO第8次用时 1672
文件2大小:103920648
NIO第9次用时 1656
文件2大小:103920648
NIO第10次用时 2234
文件2大小:103920648
NIO第11次用时 1813
文件2大小:103920648
NIO第12次用时 1937
文件2大小:103920648
NIO第13次用时 3594
文件2大小:103920648
NIO第14次用时 1578
文件2大小:103920648
NIO第15次用时 2328
文件2大小:103920648
NIO第16次用时 1750
文件2大小:103920648
NIO第17次用时 1516
文件2大小:103920648
NIO第18次用时 2156
文件2大小:103920648
NIO第19次用时 1813
文件2大小:103920648
NIO第20次用时 1875


Nio代码
    public static void copyFileNew(File sourceFile, File destFile)  
                throws IOException {  
            if (!destFile.exists()) {  
                destFile.createNewFile();  
            }  
      
            FileChannel source = null;  
            FileChannel destination = null;  
            try {  
                source = new FileInputStream(sourceFile).getChannel();  
                destination = new FileOutputStream(destFile).getChannel();  
                destination.transferFrom(source, 0, source.size());  
            } finally {  
                if (source != null) {  
                    source.close();  
                }  
                if (destination != null) {  
                    destination.close();  
                }  
            }  
        }  

 



Io代码
    public static void copyFileOld(File source, File dest) throws IOException {  
            if (!dest.exists()) {  
                dest.createNewFile();  
            }  
            InputStream in = null;  
            OutputStream out = null;  
            try {  
                in = new FileInputStream(source);  
                out = new FileOutputStream(dest);  
      
                // Transfer bytes from in to out  
                byte[] buf = new byte[1024];  
                int len;  
                while ((len = in.read(buf)) > 0) {  
                    out.write(buf, 0, len);  
                }  
            } finally {  
                if (in != null) {  
                    in.close();  
                }  
                if (out != null) {  
                    out.close();  
                }  
            }  
        }  

猜你喜欢

转载自brilliantsun.iteye.com/blog/2224994