緩衝(Buffer)

緩衝區是一塊特定的內存區域。開闢緩衝區的目的是通過緩解應用程序 上下層之間的性能差異,提高系統的性能。(上層系統的性能優於下層系統,採用緩衝區可以減少上層系統等待下層系統的時間。)
在這裏插入圖片描述

以上結構中,上層系統可以不用等待下層系統真實的接受全部數據,就可以返回操作,加快了上層組件的處理速度,從而提升了系統整體性能。
緩衝最常用的場景就是提高I/O的速度,jdk中不少的I/O組件都提供了緩衝功能。比如使用FileWriter的時候進行文件寫操作的代碼如下:

package com.smf.buffer;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

/**
* @author 作者SMF:
* @version 創建時間:2018年10月15日 下午4:36:42
* 類說明
*/
public class BufferTest {
	public static void main (String[] args) {
		
		noBuffer();
		Buffer();
	}    
	//不使用緩衝區
	public static void noBuffer(){
		try {
			int CIRCLE=10000;
			Writer writer = new FileWriter(new File("test.txt"));
			long begin = System.currentTimeMillis();
			for(int i=0;i<CIRCLE;i++){
				writer.write(i);
			}
			System.out.println("花費時間:"+(System.currentTimeMillis()-begin));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	//使用緩衝區
	public static void Buffer(){
		try {
			int CIRCLE=10000;    
			Writer writer = new FileWriter(new File("test.txt"));
			@SuppressWarnings("resource")
			BufferedWriter bufferedWriter = new BufferedWriter(writer);//緩衝區默認大小爲8k
			long begin = System.currentTimeMillis();
			for(int i=0;i<CIRCLE;i++){
				bufferedWriter.write(i);
			}
			System.out.println("花費時間:"+(System.currentTimeMillis()-begin));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

下面是運行結果:

在這裏插入圖片描述
可以看出,使用緩衝極大的提高了程序運行的效率。
以上簡單的講述了緩衝的原理和簡單應用,更多使用和介紹敬請期待

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章