java 写文件 效率_Java各种写入文件函数耗时对比

本文通过对比FileOutputStream、BufferedOutputStream、FileWriter、BufferedWriter、NewOutputStream和NewBufferedWriter六种Java文件写入方式,测试在不同行数条件下写入文件所需时间。结果显示,当行数超过20W时,FileOutputStream和NewOutputStream性能较低。而在较小数据量下,BufferedWriter和NewBufferedWriter表现稍优,但整体差异不大。测试结果表明各类时间复杂度大致为O(1/kn),k因类而异。
摘要由CSDN通过智能技术生成

前言

众所周知,Java中有多种针对文件的操作类,以面向字节流和字符流可分为两大类,这里以写入为例:

面向字节流的:FileOutputStream 和 BufferedOutputStream

面向字符流的:FileWriter 和 BufferedWriter

近年来发展出New I/O ,也叫NIO,里面又包装了两个类:NewOutputStream 和 NewBufferedWriter

现在,我们建立测试程序,比较这些类写入文件的性能。

机器配置

Processor Name:Intel Core i7

Processor Speed:2.2 GHz

Number of Processors:1

Total Number of Cores:4

L2 Cache (per Core):256 KB

L3 Cache:6 MB

Memory:16 GB

测试程序

纵向比较:几种文件操作类向文件中写入相同行数的内容(每行内容均为“写入文件Data\n”),比较其耗费时间

横向比较:对于同一个文件操作类,比较写入不同行数内容情况下所耗费时间;本文以2的倍数不断增长行数

1 importjava.io.File;2 importjava.io.FileOutputStream;3 import java.io.*;4 importjava.nio.file.Files;5 importjava.nio.file.Paths;6

7 public classtestFileIO {8

9 public static void testDriver () throwsIOException {10 int maxlineNum = 100000001;//写入文件的最大行数

11 int startlineNum = 1;//写入文件的行数

12 int Multiplying = 2;//行数增长倍率

13

14 long begin = 0L;15 long end = 0L;16

17 //将时间统计写入文件Result.txt中

18 FileWriter fileWriter = new FileWriter("./Result.txt", true);19 BufferedWriter bufferedWriter = newBufferedWriter(fileWriter);20

21 System.out.println("Test FileOutputStream begin.");22 for (int lineNum = startlineNum; lineNum < maxlineNum; lineNum *=Multiplying) {23 begin =System.currentTimeMillis();24 testFil

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值