轉(zhuǎn)載 java文件寫入耗時(shí)

          轉(zhuǎn)載地址:http://zhenqinghualy.blog.163.com/blog/static/5498053520100123332267/ 
          原創(chuàng)地址不詳 

          從老紫竹的網(wǎng)站上轉(zhuǎn)來滴 


          import java.io.BufferedOutputStream;   
          import java.io.File;   
          import java.io.FileOutputStream;   
          import java.io.FileWriter;   
          import java.nio.ByteBuffer;   
          import java.nio.channels.FileChannel;   
            
          /**  
          * 測(cè)試各種寫文件的方法性能。  
          *   
          * @author 老紫竹 JAVA世紀(jì)網(wǎng)(java2000.net)  
          *   
          */  
          public class T {   
            
            public static void main(String[] args) {   
              FileOutputStream out = null;   
              FileOutputStream outSTr = null;   
              BufferedOutputStream Buff = null;   
              FileWriter fw = null;   
              int count = 1000000;// 寫文件行數(shù)   
              try {   
                byte[] bs = "測(cè)試java 文件操作\r\n".getBytes();   
                out = new FileOutputStream(new File("C:/add.txt"));   
                long begin = System.currentTimeMillis();   
                for (int i = 0; i < count; i++) {   
                  out.write(bs);   
                }   
                out.close();   
                long end = System.currentTimeMillis();   
                System.out.println("FileOutputStream執(zhí)行耗時(shí):" + (end - begin) + " 豪秒");   
            
                outSTr = new FileOutputStream(new File("C:/add0.txt"));   
                Buff = new BufferedOutputStream(outSTr);   
                long begin0 = System.currentTimeMillis();   
                for (int i = 0; i < count; i++) {   
                  Buff.write(bs);   
                }   
                Buff.flush();   
                Buff.close();   
                long end0 = System.currentTimeMillis();   
                System.out.println("BufferedOutputStream執(zhí)行耗時(shí):" + (end0 - begin0) + " 豪秒");   
            
                fw = new FileWriter("C:/add2.txt");   
                long begin3 = System.currentTimeMillis();   
                for (int i = 0; i < count; i++) {   
                  fw.write("測(cè)試java 文件操作\r\n");   
                }   
                fw.flush();   
                fw.close();   
                long end3 = System.currentTimeMillis();   
                System.out.println("FileWriter執(zhí)行耗時(shí):" + (end3 - begin3) + " 豪秒");   
            
                long begin4 = System.currentTimeMillis();   
                String path = "C:/add3.txt";   
                ByteBuffer bb = ByteBuffer.wrap(bs);   
                FileChannel out2 = new FileOutputStream(path).getChannel();   
                for (int i = 0; i < count; i++) {   
                  out2.write(bb);   
                  bb.rewind();   
                }   
            
                out2.close();   
                long end4 = System.currentTimeMillis();   
                System.out.println("FileChannel執(zhí)行耗時(shí):" + (end4 - begin4) + " 豪秒");   
              } catch (Exception e) {   
                e.printStackTrace();   
              } finally {   
                try {   
                  fw.close();   
                  Buff.close();   
                  outSTr.close();   
                  out.close();   
                } catch (Exception e) {   
                  e.printStackTrace();   
                }   
              }   
            }   
          }  

          在我的筆記本上,運(yùn)行結(jié)果如下 

          FileOutputStream執(zhí)行耗時(shí):4891 豪秒 

          BufferedOutputStream執(zhí)行耗時(shí):78 豪秒 

          FileWriter執(zhí)行耗時(shí):438 豪秒 

          FileChannel執(zhí)行耗時(shí):2812 豪秒 

          當(dāng)然最終生成的文件都是正確的 

          總結(jié): 

          BufferedOutputStream 由于有緩沖,性能明顯好 

          FileOutputStream 性能最差,因?yàn)槠涿看味紝懭胱止?jié)。 

          FileWriter 性能很一般 

          FileChannel使用了nio,但如果沒有緩沖,必能太指望性能了 

          posted on 2013-12-25 14:24 葉落心成 閱讀(478) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2013年12月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆檔案

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 贵港市| 郎溪县| 稻城县| 长岭县| 云林县| 嘉祥县| 敖汉旗| 永城市| 禹州市| 永新县| 聊城市| 烟台市| 剑川县| 长武县| 三原县| 松溪县| 沿河| 邢台县| 当雄县| 偏关县| 修文县| 平湖市| 石阡县| 抚州市| 东乡族自治县| 临西县| 铜鼓县| 兴宁市| 嘉义县| 建宁县| 泸州市| 西青区| 五莲县| 宁强县| 江津市| 渭南市| 新蔡县| 三门峡市| 宁明县| 金阳县| 钟山县|