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

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

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

    byterat

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      54 隨筆 :: 0 文章 :: 15 評論 :: 0 Trackbacks

    眾所周知, Java在從XML文件中裝載內容到內存過程中,不論用何種方式,IO操作的開銷都無可避免。本文嘗試比較dom4j中的XPP3和SAX兩種方式裝載XML文件的性能,以便將IO操作的開銷降到最小!

    package gz.lwm;

    import java.io.File;
    import org.apache.log4j.Logger;
    import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XPP3Reader;

    public class TestDom4j {
     private static final Logger log = Logger.getLogger(TestDom4j.class);
     private static long bt; 
     
     public static void main(String[] args) {
      Document doc = DocumentHelper.createDocument();   
      //先運行getXmlSAX()
      bt = System.currentTimeMillis();
      String strXml = getXmlSAX("xml/test.xml");
      if(log.isDebugEnabled()){
       log.debug("\ngetXmlSAX() use time: " + (System.currentTimeMillis() - bt) + " millis\n");
      }

      //再運行getXmlXPP3()
      bt = System.currentTimeMillis();
      String s1 =getXmlXPP3("xml/test.xml");
      if(log.isDebugEnabled()){
       log.debug("\ngetXmlXPP3() use time: " + (System.currentTimeMillis() - bt) + " millis\n");
      }
      
      
     }
     
     public static String getXmlSAX(String xmlFile){
      String result = "";
      try {
       SAXReader reader = new SAXReader();
       Document document = reader.read(new File(xmlFile));
       result = document.asXML();
      } catch (Exception e) {
       e.printStackTrace();
      }
      return result;
     }
     
     public static String getXmlXPP3(String xmlFile){
      String result = "";
      try {
       XPP3Reader reader = new XPP3Reader();
       Document document = reader.read(new File(xmlFile));
       result = document.asXML();
      } catch (Exception e) {
       e.printStackTrace();
      }
      return result;
     }


     
    }

    有沒有這一句"Document doc = DocumentHelper.createDocument()",對性能的影響很大,特別是對大xml文件(盡管并沒有使用doc)

    另外, getXmlXSAX()和getXmlXPP3()運行的先后次序對性能的影響也很大!

    測試:
        在我的機器上,對一個100k左右的XML文件進行多次測試后的均值結果為:

        getXmlXPP3() use time: 265 millis
        ...
        getXmlXSAX() use time: 359 millis
        ...

    結論:
        通過比較,在讀取XML文件上,XPP3略為優于SAX!


    注意:

    要運行例子,classpath需包含:
    dom4j-1.6.1.jar
    jaxen-1.1-beta-10.jar
    log4j-1.2.9.jar
    pull-parser-2.1.10.jar
    xpp3-1.1.4c.jar


    參考:
    dom4j :  http://www.dom4j.org/
    XPP   :  http://www.extreme.indiana.edu/xgws/xsoap/xpp/

    posted on 2007-05-19 00:39 比特鼠 閱讀(2514) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 国产1024精品视频专区免费| 色婷婷精品免费视频| 亚洲ⅴ国产v天堂a无码二区| 亚洲狠狠久久综合一区77777| 亚洲精品福利在线观看| 亚洲国产AV无码一区二区三区 | 亚洲视频中文字幕| a毛片在线看片免费| 91精品成人免费国产片| 国产精品久久免费视频| 亚洲无线码在线一区观看| 精品亚洲aⅴ在线观看| 成人婷婷网色偷偷亚洲男人的天堂 | 黑人粗长大战亚洲女2021国产精品成人免费视频 | 高潮毛片无遮挡高清免费| 国产又大又粗又硬又长免费| 亚洲精品免费在线观看| 2019中文字幕在线电影免费 | 中文字幕亚洲无线码| 久久精品国产亚洲av麻豆蜜芽 | 99在线视频免费| 国产免费久久精品久久久| 免费一级做a爰片久久毛片潮| 最近中文字幕免费2019| 久久亚洲高清综合| 亚洲av无码一区二区三区人妖| 91免费国产自产地址入| 亚洲AV男人的天堂在线观看| 久久国产精品萌白酱免费| 亚洲人成影院在线观看 | 精品成人一区二区三区免费视频| 久久久精品2019免费观看| 亚洲综合偷自成人网第页色| 无码国产精品一区二区免费模式| 亚洲国产一区二区三区| 亚洲国产综合AV在线观看| 亚洲人成图片小说网站| 可以免费看的卡一卡二| www.亚洲日本| 久久久久亚洲AV成人网| jjizz全部免费看片|