程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java程序用緩沖IO來提高性能

Java程序用緩沖IO來提高性能

編輯:關於JAVA

Java 輸入/輸出(IO)的性能可以使用標准的緩沖類提升,就像操作系統通過緩沖請求提高它的速度一樣。例如,如果一段代碼要求從磁盤上讀取數據,它會試圖讀取內存中已有的數據;如果代碼希望向磁盤寫一些東西,它可能在完成寫操作前將輸出在內存中存放一段時間以等待更多的數據。

在Java的IO系統中,將一個字符寫入內存比寫到磁盤上快得多,例如:

// 這段代碼會拋出 IOException
Writer writer = new FileWriter( new File( "file.txt" ) );
for(int i=0; i〈1000; i++) {
writer.write(""+i);
writer.write(" ");
}
writer.close( );

在這個范例代碼中,FileWriter一次輸出一個數字,在Apple Powerbook 上測量消耗的時間,第一次是180毫秒,以後是90毫秒,這個不同可能是JVM的即時(just-in-time)編譯導致的。

給這段代碼添加緩沖功能就是在FileWriter上創建一個BufferedWriter對象。

//這段代碼會拋出IOException
Writer writer = new BufferedWriter(new FileWriter(
new File( "file.txt" )
) );
for(int i=0; i〈1000; i++) {
writer.write(""+i);
writer.write(" ");
}
writer.close( );

現在BufferedWriter會決定以什麼頻率向FileWriter發送寫調用。可以使用flush( )方法強制發出寫調用。增加了BufferedWriter後,代碼的運行時間是63毫秒。如果是有很多小量的輸出,那麼BufferedWriter在缺省條件下的性能提升是非常顯著的。

除了BufferedWriter外,BufferedOutputStream也具有相同的品質,對於輸入就是BufferedReader和BufferedInputStream。

需要注意的是緩沖類不光是在文件系統上起作用,任何的Reader/Writer都能進行緩沖以提高字符輸入/輸出的速度,同樣任何OutputStream/InputStream都能進行緩沖以提高字節IO的速度。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved