魚躍于淵

          First know how, Second know why !
          posts - 0, comments - 1, trackbacks - 0, articles - 49

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

          Posted on 2008-09-20 08:59 魚躍于淵 閱讀(122) 評(píng)論(0)  編輯  收藏 所屬分類: 精品網(wǎng)摘

          [摘要] Java 輸入/輸出(IO)的性能可以使用標(biāo)準(zhǔn)的緩沖類提升,就像操作系統(tǒng)通過緩沖請(qǐng)求提高它的速度一樣。
          [關(guān)鍵字]
          緩沖IO Java 性能
            Java 輸入/輸出(IO)的性能可以使用標(biāo)準(zhǔn)的緩沖類提升,就像操作系統(tǒng)通過緩沖請(qǐng)求提高它的速度一樣。例如,如果一段代碼要求從磁盤上讀取數(shù)據(jù),它會(huì)試圖讀取內(nèi)存中已有的數(shù)據(jù);如果代碼希望向磁盤寫一些東西,它可能在完成寫操作前將輸出在內(nèi)存中存放一段時(shí)間以等待更多的數(shù)據(jù)。

            在Java的IO系統(tǒng)中,將一個(gè)字符寫入內(nèi)存比寫到磁盤上快得多,例如:

            // 這段代碼會(huì)拋出 IOException

            Writer writer = new FileWriter( new File( "file.txt" ) );

            for(int i=0; i<1000; i++) {

            writer.write(""+i);

            writer.write("\n");

            }

            writer.close( );

            在這個(gè)范例代碼中,F(xiàn)ileWriter 一次輸出一個(gè)數(shù)字,在Apple Powerbook 上測(cè)量消耗的時(shí)間,第一次是180毫秒,以后是90毫秒,這個(gè)不同可能是JVM的即時(shí)(just-in-time)編譯導(dǎo)致的。

            給這段代碼添加緩沖功能就是在FileWriter上創(chuàng)建一個(gè)BufferedWriter 對(duì)象。

            //這段代碼會(huì)拋出IOException

            Writer writer = new BufferedWriter(new FileWriter(

            new File( "file.txt" )

            ) );

            for(int i=0; i<1000; i++) {

            writer.write(""+i);

            writer.write("\n");

            }

            writer.close( );

            現(xiàn)在BufferedWriter 會(huì)決定以什么頻率向FileWriter發(fā)送寫調(diào)用。可以使用flush( )方法強(qiáng)制發(fā)出寫調(diào)用。增加了BufferedWriter 后,代碼的運(yùn)行時(shí)間是63毫秒。如果是有很多小量的輸出,那么BufferedWriter 在缺省條件下的性能提升是非常顯著的。

            除了BufferedWriter 外,BufferedOutputStream 也具有相同的品質(zhì),對(duì)于輸入就是BufferedReader 和BufferedInputStream。

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


          主站蜘蛛池模板: 财经| 屏南县| 辽阳市| 富顺县| 内乡县| 城固县| 七台河市| 海兴县| 万全县| 高邮市| 汶上县| 德阳市| 兴业县| 潍坊市| 惠安县| 鄂州市| 章丘市| 乐昌市| 双辽市| 津南区| 从江县| 金湖县| 海原县| 伊宁市| 衡阳县| 东平县| 麻阳| 寿宁县| 广南县| 蒙城县| 裕民县| 抚州市| 红原县| 桓仁| 贵溪市| 鹿邑县| 南漳县| 万安县| 绥宁县| 罗山县| 沈丘县|