测试BufferedWriter,BufferedReader提高OutputStreamWriter,InputStreamReader效率的情况

上一博客遇到过这个问题,因此实际测试一番。

首先看BufferedWriter:

public void writeFile_BufferedWriter() throws FileNameException {	
		try {
			
			FileOutputStream outputStream=new FileOutputStream(file);
			OutputStreamWriter writer=new OutputStreamWriter(outputStream,"GBK");
			BufferedWriter bufferedWriter=new BufferedWriter(writer);
			long stratTime = System.nanoTime();
			
			for(int i=0;i<12345;i++) {
				bufferedWriter.write("你好");
			}
			long endTime = System.nanoTime();
			System.out.println("BufferedWriter消耗时间"+(endTime-stratTime));
			bufferedWriter.close();
			writer.close();
			outputStream.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}

运行结果为:

BufferedWriter消耗时间7382478

public void writeFile_NoBufferedWriter() throws FileNameException {	
		try {
			FileOutputStream outputStream=new FileOutputStream(file);
			OutputStreamWriter writer=new OutputStreamWriter(outputStream,"GBK");
			long stratTime = System.nanoTime();
		    for(int i=0;i<12345;i++) {
		    	writer.write("你好");
		    }
		    long endTime = System.nanoTime();
		    System.out.println("NoBufferedWriter消耗时间"+(endTime-stratTime));
			writer.close();
			outputStream.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}

运行结果为:

NoBufferedWriter消耗时间20439312

一起比较下两个结果:

BufferedWriter消耗时间7382478
NoBufferedWriter消耗时间20439312

很明显看出数量级的差异。一个7位一个8位。

接下来看BufferedReader:

public void readerFile()throws FileNameException, FileNotFoundException, UnsupportedEncodingException {  
			try {
			FileInputStream in=new FileInputStream(file);
		    BufferedReader bufferedReader=new BufferedReader(
		  		new InputStreamReader(in, "GBK"));
		    StringBuffer buffer=new StringBuffer();
		    char[] buf=new char[64];
		    int count=0;
		    long stratTime = System.nanoTime();
		    while((count=bufferedReader.read(buf))!=-1) {
						buffer.append(buf,0,count);
		    }
		    long endTime = System.nanoTime();
		    System.out.println("BufferedReader消耗时间:"+(endTime-stratTime));
				bufferedReader.close();
			} catch (IOException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
	}

运行结果为:

BufferedReader消耗时间:7299266

public void readerFile_NoBufferedReader()throws FileNameException, FileNotFoundException, UnsupportedEncodingException {  
		try {
		FileInputStream in=new FileInputStream(file);
	  	InputStreamReader in2=new InputStreamReader(in, "GBK");
	    StringBuffer buffer=new StringBuffer();
	    char[] buf=new char[64];
	    int count=0;
	    long stratTime = System.nanoTime();
	    while((count=in2.read(buf))!=-1) {
					buffer.append(buf,0,count);
	    }
	    long endTime = System.nanoTime();
	    System.out.println("NoBufferedReader消耗时间:"+(endTime-stratTime));
			in.close();
			in2.close();
		} catch (IOException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
}

运行结果为:

NoBufferedReader消耗时间:7714185

对比一下结果

BufferedReader消耗时间:7299266
NoBufferedReader消耗时间:7714185

虽然结果差距不是很大但也比较明显。
我们再将4个结果一起来看一下;

BufferedWriter消耗时间7382478
NoBufferedWriter消耗时间20439312
BufferedReader消耗时间:7299266
NoBufferedReader消耗时间:7714185

可以看出有 Buffered情况下读写差距不是很大。
但没有Buffered情况下读写差距就非常打,而且写的时间比读的时间大很多。因此我们可以得出一个这样结论BufferedWrite提升的效率比BufferedReader高,所以写文件一定要加上BufferedWrite。当然读写都加是最好。
注意: 读写都是同一个文件,并且在写之前都将内容清空,而且读的文件内容就是之前写的内容。还有就是从数学角度来看上面结论不严谨,要得出严谨的结论要得出大规模数据再进行分析才有效,因此如有错误请指出。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值