首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大型文档上的JaxB性能

大型文档上的JaxB性能
EN

Stack Overflow用户
提问于 2013-06-25 11:23:27
回答 2查看 582关注 0票数 1

我从RESTful web服务得到响应,它可以返回长达300 up的字符串。

当我试图使用JaxB2解压缩时,最多需要12秒

有什么我能做的吗?

代码语言:javascript
复制
public class Convertor{

   JAXBContext responseJaxbContext;

   public Convertor(){
      requestJaxbContext = JAXBContext.newInstance(MyClassResponse.class);   
   }


    public MyClassResponse convertXml(String str) {
         MyClassResponse response = null;   
        try {
             Unmarshaller jaxbUnMarshaller = bookingResponseJaxbContext.createUnmarshaller();
             StringReader reader = new StringReader(str);
             response = (MyClassResponse) jaxbUnMarshaller.unmarshal(reader);

        } catch (JAXBException e) {
            e.printStackTrace();
        }
        return response;
    }
}

更新:使用

jaxbUnMarshaller.setSchema(null);

现在我的解封时间是5-7秒。

EN

回答 2

Stack Overflow用户

发布于 2013-06-25 11:31:53

确保只实例化JAXBContext/您的转换器类一次。

在我的经验中,创建一个JAXBContext是昂贵的。

编辑:但这不是12s的解释,我想.

票数 0
EN

Stack Overflow用户

发布于 2013-06-25 13:30:22

要进行比较,请尝试使用SAX解析器解析XML文档,以计算我们解析XML文档所花费的时间。

代码语言:javascript
复制
import java.io.StringReader;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;

public class Demo {

    public static void main(String[] args) throws Exception {
        String xml; // Your XML

        SAXParserFactory spf = SAXParserFactory.newInstance();
        spf.setNamespaceAware(true);
        SAXParser sp = spf.newSAXParser();
        XMLReader xmlReader = sp.getXMLReader();

        xmlReader.setContentHandler(new DefaultHandler());

        StringReader reader = new StringReader(xml);
        InputSource inputSource = new InputSource(reader);

        // Profile This
        xmlReader.parse(inputSource);
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17295987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档