JAVA IO 文件拷贝性能测试-2009-03-13 javanioio
程序员文章站
2024-03-16 19:07:22
...
今天做了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代码
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(); } } }