常用優化組件和方法
本節主要介紹可用於系統性能優化的組件和性能優化思想重點介紹緩沖和緩存這兩個組件以及它們的使用方法此外還將介紹幾種常用的優化思想如池化對象並行代替串行負載均衡以及時間換空間和空間換時間
緩沖(Buffer)()
緩沖區是一塊特定的內存區域開辟緩沖區的目的是通過緩解應用程序上下層之間的性能差異提高系統的性能在日常生活中緩沖的一個典型應用是漏斗如圖所示
![](http://tw.wingwit.com/Article/UploadFiles/201311/2013112320005041.jpg)
圖 緩沖的示意圖
圖顯示了漏斗作為緩沖區的使用場景上層系統如茶壺下層系統如水瓶現需要將茶壺中的水倒入水瓶中這就有如將內存中的數據寫入硬盤中一樣茶壺的出水速度可以很快但是水瓶的瓶口很細因此形成性能瓶頸要將水全部倒入瓶中必須等待瓶口的水緩緩流下為了加快速度可以使用一個漏斗(緩沖)
漏斗的初始口徑很大並且擁有一定的容量因此茶壺中的水可以先倒入漏斗中就有如內存數據先寫入一塊緩沖區只要漏斗的容量夠大茶壺裡的水很快就能倒完至此上層系統完成工作可以去處理其他業務邏輯而此時水並未完全進入瓶中而大部分被積累在漏斗中這就可以由下層系統慢慢處理直到水完全進入瓶中漏斗(緩沖區)被清空
注意緩沖可以協調上層組件和下層組件的性能差當上層組件性能優於下層組件時可以有效減少上層組件對下層組件的等待時間
基於這樣的結構上層應用組件不需要等待下層組件真實地接受全部數據即可返回操作加快了上層組件的處理速度從而提升系統整體性能
緩沖最常用的場景就是提高I/O的速度為此JDK內不少I/O組件都提供了緩沖功能比如當使用FileWriter時進行文件寫操作的代碼如下
Writer writer = new FileWriter(new File(filetxt))
long begin=SystemcurrentTimeMillis()
for (int i = ; i < CIRCLE; i++) {
writerwrite(i) //寫入文件
}
writerclose()
Systemoutprintln(testFileWriter spend:+(SystemcurrentTimeMillis()begin))
為進行I/O優化可以為FileWriter加上緩沖
Writer writer = new BufferedWriter(new FileWriter(new File(filetxt))) //增加了緩沖
long begin=SystemcurrentTimeMillis()
for (int i = ; i < CIRCLE; i++) {
writerwrite(i)
}
writerclose()
Systemoutprintln(testFileWriterBuffer spend:+(SystemcurrentTimeMillis()begin))
以上代碼使用BufferedWriter為FileWriter對象增加緩沖功能BufferedWriter對象擁有兩個構造函數
public BufferedWriter(Writer out)
public BufferedWriter(Writer out int sz)
返回目錄Java程序性能優化讓你的Java程序更快更穩定
編輯推薦
Java程序設計培訓視頻教程
JEE高級框架實戰培訓視頻教程
JME移動開發實戰教學視頻
Visual C++音頻/視頻技術開發與實戰
Oracle索引技術
ORACLEG數據庫開發優化指南
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27807.html