[size=medium]今天做了java IO 与 NIO 拷贝文件的性能测试,发现NIO并不比IO快多少,甚至有时候比老IO慢。[/size]
[img]http://brilliantsun.iteye.com/upload/attachment/84027/4fce3420-5bdb-347a-bb3d-e8d38b647fff.jpg[/img]
以下是测试记录(用时毫秒记):
文件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代码
[img]http://brilliantsun.iteye.com/upload/attachment/84027/4fce3420-5bdb-347a-bb3d-e8d38b647fff.jpg[/img]
以下是测试记录(用时毫秒记):
文件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();
}
}
}