天天看点

4种复制文件的方式性能比较

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 方式比较快