<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    DANCE WITH JAVA

    開發出高質量的系統

    常用鏈接

    統計

    積分與排名

    好友之家

    最新評論

    Java中的IO的性能優化

    ?

    Java中的IO的性能優化
    在使用IO的時候注意一下細節,能使性能得到很大的優化.
    首先讀寫大文件,使用Buffer是肯定的了,使用方法,有下邊兩個

    ?1 方法一:
    ?2 public ? static ? void ?test1(String?fileName)? {
    ?3 ???? long ?start? = ?System.currentTimeMillis();
    ?4 ???? try ? {
    ?5 ????????FileInputStream?fis? = ? new ?FileInputStream(fileName);
    ?6 ????????BufferedReader?br? = ? new ?BufferedReader( new ?InputStreamReader(fis)?);
    ?7 ????????StringBuffer?sb? = new ?StringBuffer();
    ?8 ????????String?str;
    ?9 ???????? while ?((str? = ?br.readLine())? != ? null )? {
    10 ????????????sb.append(str);
    11 ????????}

    12 ????}
    ? catch ?(IOException?e)? {
    13 ????}

    14 ???? long ?end? = ?System.currentTimeMillis();
    15 ???? long ?time = end - start;
    16 ????System.out.println(time);
    17 }

    18 方法二:
    19 public ? static ? void ?test2(String?fileName)? {
    20 ???? long ?start? = ?System.currentTimeMillis();
    21 ???? try ? {
    22 ????????FileInputStream?fis? = ? new ?FileInputStream(fileName);
    23 ???????? byte ?buf[]? = ? new ? byte [ 8192 ];
    24 ???????? int ?n;
    25 ????????StringBuffer?sb? = ? new ?StringBuffer();
    26 ???????? while ?((n? = ?fis.read(buf))? != ? - 1 )? {
    27 ????????????sb.append(buf);
    28 ????????}

    29 ????????fis.close();
    30 ????}
    ? catch ?(IOException?e)? {
    31 ????}

    32 ???? long ?end? = ?System.currentTimeMillis();
    33 ???? long ?time = end - start;
    34 ????System.out.println(time);
    35 }


    方法一1937ms?
    方法二47ms
    測試結果相差大概50倍左有,很大。
    而我平時的習慣是方法一。問題主要出在readLine()上。

    如果只是簡單的文件拷貝,下邊兩種方法也不錯

    ?1 public ????? static ????? void ???test3()?????? {
    ?2 ????String?cmd?? = ? " ?copy?d:/out1.txt?out2.txt? " ?;
    ?3 ???? try ? {
    ?4 ?????????Runtime.getRuntime().exec(cmd);
    ?5 ????}
    ? catch ?(Exception?e)? {
    ?6 ?????????e.printStackTrace();
    ?7 ????}

    ?8 }

    ?9 public ??? static ??? void ??test4()? {
    10 ????String?inFileName?? = ??? " ?d:/out1.txt? " ?;
    11 ????String?outFileName?? = ??? " ?d:/out2.txt? " ?;
    12 ???? long ??start?? = ??System.currentTimeMillis();
    13 ???? try ? {
    14 ????????File?inFile?? = ??? new ??File(inFileName);
    15 ????????File?outFile?? = ??? new ??File(outFileName);????????
    16 ????????RandomAccessFile?inRaf?? = ??? new ??RandomAccessFile(inFile,? " ?r? " ?);
    17 ????????RandomAccessFile?outRaf?? = ??? new ??RandomAccessFile(outFile,? " ?rw? " ?);?????????????
    18 ????????FileChannel?infc?? = ??inRaf.getChannel();
    19 ????????FileChannel?outfc?? = ??outRaf.getChannel();?????????????
    20 ????????infc.transferTo(? 0 ?,?inFile.length(),outfc?);?????????????
    21 ????????infc.close();
    22 ????????outfc.close();
    23 ????}
    ? catch ?(Exception?e)? {
    24 ????????e.printStackTrace();
    25 ????}

    26 ???? long ??end?? = ??System.currentTimeMillis();
    27 ???? long ??time? = ?end? - ?start;
    28 ????System.out.println(time);
    29 }



    posted on 2006-11-10 18:05 dreamstone 閱讀(2199) 評論(3)  編輯  收藏 所屬分類: jdk相關

    評論

    # re: Java中的IO的性能優化 2006-11-10 20:49 翔 ruben

    你讀一行和讀byte [ 8192 ]本來就不公平。
    新IO優勢在非阻塞!不過個人比較喜歡新IO。
    不過舊IO真的很簡單,直觀!
    還有編碼轉化,個人覺得這個才真的令人煩!  回復  更多評論   

    # re: Java中的IO的性能優化 2006-11-27 16:12 roygbip

    方法一如果用來讀取大文件就會出現OutOfMemoryError,所以以后還是用第二個方法好了。  回復  更多評論   

    # re: Java中的IO的性能優化 2006-11-27 19:01 dreamstone

    讀取大文件都不行的,這個只是體現問題的demo,如果要讀取大文件須要重寫很多,比如加大buffer,讀一次寫一次,或者直接用channel  回復  更多評論   

    主站蜘蛛池模板: 人体大胆做受免费视频| 亚洲AV无码国产剧情| 美女网站在线观看视频免费的| 国内一级一级毛片a免费| 亚洲久悠悠色悠在线播放| 91免费国产在线观看| 亚洲成a人不卡在线观看| 亚洲一级毛片免费观看| 91亚洲国产成人久久精品| 欧洲乱码伦视频免费| 亚洲一区中文字幕在线观看| av无码国产在线看免费网站| 亚洲av成人综合网| 天天看免费高清影视| 美女被暴羞羞免费视频| 亚洲国产成人五月综合网| 国产色无码精品视频免费| 亚洲AV无码专区国产乱码电影 | 亚洲最新黄色网址| 黄页网站免费在线观看| 亚洲欧美国产国产综合一区| 免费大片在线观看网站| 免费无码又爽又刺激网站直播| 97久久精品亚洲中文字幕无码| 色se01短视频永久免费| 韩国亚洲伊人久久综合影院| 久久精品国产亚洲Aⅴ蜜臀色欲| 久久青草91免费观看| 亚洲制服丝袜第一页| 免费人成在线观看网站视频| 久久成人永久免费播放| 亚洲视频在线一区二区三区| 日韩免费无砖专区2020狼| 久久九九免费高清视频| 亚洲日韩乱码久久久久久| 国产99视频免费精品是看6| 国精产品一区一区三区免费视频| 亚洲国产日韩在线| 亚洲日韩在线观看| 91免费国产在线观看| 国产大片免费天天看|