4种复制文件的方式性能比较
最近工作中涉及到了文件的下载,于是就想寻找一种最快的方式,考虑到在不考虑网络因素的情况下,下载和文件的复制其实可以理解为
一回事,本次测试中使用了4种方式
硬件如下
jdk 7
代码如下:
public class FileDownloader {
}
测试代码如下:
public class FileDownloaderTest {
测试方法:
将同样的文件,在原始目录下,复制4份,文件名不同,文件一摸一样。然后多次执行测试代码。
做了2组测试,每组执行了3次,结果如下:
文件大小:98.3M
Time taken by Apache Commons IO Copy = 64954135
Time taken by Stream Copy = 375539829
Time taken by Channel Copy = 57012898
Time taken by Java7 Files Copy = 65101591
Time taken by Apache Commons IO Copy = 63818085
Time taken by Stream Copy = 375973711
Time taken by Channel Copy = 57417522
Time taken by Java7 Files Copy = 65688487
Time taken by Apache Commons IO Copy = 63172674
Time taken by Stream Copy = 354136258
Time taken by Channel Copy = 58497984
Time taken by Java7 Files Copy = 79916185
文件大小:746M
Time taken by Apache Commons IO Copy = 660830180
Time taken by Stream Copy = 2791359285
Time taken by Channel Copy = 3861113037
Time taken by Java7 Files Copy = 6162249000
Time taken by Apache Commons IO Copy = 381343255
Time taken by Channel Copy = 2987676936
Time taken by Stream Copy = 2856878081
Time taken by Java7 Files Copy = 19034765260
Time taken by Apache Commons IO Copy = 419664709
Time taken by Stream Copy = 2761465029
Time taken by Channel Copy = 4183763748
Time taken by Java7 Files Copy = 23261100925
结论 nio 方式比较快